Ошибки Microsoft Visual Studio 2012 RC C++ IntelliSense

Я новичок в C++ (я пришел из PHP), и во время моих первых нескольких проектов я сталкиваюсь с некоторыми ошибками IntelliSense. Что говорит окно отладки:

IntelliSense: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR" c:\C++\RenderEngine\RenderEngine\engine.c

Эта ошибка даже появляется, когда я запускаю этот простой код:

#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
    MessageBox(NULL, "Hello, world!", "Simple pop-up", MB_OK);
    return 0;
}

Однако, если я поставлю «L» перед кавычками («L»Hello, world!»), ошибка исчезнет. Можно ли избавиться от него другим способом? (В учебнике, которому я следовал, не было буквы L впереди, поэтому это ОЧЕНЬ сбивает меня с толку ...) Я просматривал Интернет, но не нашел ничего полезного ... Извините, если такой вопрос уже ответили, только я не видел...

С уважением, Армин Маковец.


person ArdentAngel    schedule 19.07.2012    source источник


Ответы (2)


Ошибка заключается в том, что вы используете 8-битные строки символов в месте, которое ожидает широкие строки символов. Строковая константа в кавычках — это строка ASCII (8 бит), перед которой ставится буква L, например, L «строковая константа» означает, что это строка wchar_t.

Решение этой проблемы, как вы сделали, установив свойства среды, чтобы всегда использовать строки wchar_t, является одним из способов решить эту проблему, но если вы сделаете это, она больше нигде не будет компилироваться. Как правило, лучше сделать это переносимым способом и просто использовать строки wchar_t, начав строковый литерал с L.

person David Mason    schedule 20.07.2012

Удалось решить эту проблему, перейдя в: «Проект-> (Имя проекта) Свойства-> Свойства конфигурации-> Общие-> Набор символов» и установив для него многобайтовый набор символов.

person ArdentAngel    schedule 20.07.2012