我正在使用VS2010,我在我的代码中有这些:
::MessageBox(0, "Init FAILED", 0, 0);
当我编译项目时,我得到的错误无法转换参数2来自' const char [25]'到LPCWSTR'。我在互联网上搜索了这个问题,人们告诉我改变字符集'我的项目设置中的选项来自' Unicode'到未设置'。但它不起作用。当我运行这些代码时:
#ifdef UNICODE
printf("unicode");
#else
printf("others");
#endif
我得到相同的答案" unicode"无论我选择什么选项。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
要回答原始问题,您无需更改字符集。解决方案是使用tchar.h中定义的_T()宏。
::MessageBox(0, _T("Init Failed"), 0, 0);
_T()宏将通过在字符串上附加“L”来指定宽字符串,或者通过单独保留字符串来指定ANSI字符串。
如果您真的想要使用要更改的字符集,则应更改字符集 。您不会因为代码无法编译而更改字符集。