情景1 我创建了一个空的vc ++项目,为它添加了一个c文件和#include。现在在我的main()函数中,如果我将鼠标悬停在MessageBox函数上,它将解析为MessageBoxA。
情景2 我现在在这里创建一个win32 windows项目,MessageBox解析为MessageBoxW ??? 我检查了项目属性 - > c / c ++ - >预处理器属性,我发现 WIN32 已定义,所以我在之前的项目中做到了但仍然是相同的结果。
我该怎么办。当然我可以使用后一种类型的项目,但我认为我是一个想要学习tid-bits的顽固新秀。
感谢。
答案 0 :(得分:3)
这取决于UNICODE条件的存在与否,该条件由项目配置决定:Unicode或多字节字符集。
答案 1 :(得分:3)
新空项目的默认“字符集”属性为“多字节”,这意味着预处理器不会定义UNICODE
预处理器符号,因此MessageBox
将替换为MessageBoxA
{1}}。
对于Win32项目,默认的“字符集”属性为“Unicode”,这意味着预处理器将定义UNICODE
,因此MessageBox
将替换为MessageBoxW
{1}}。
有关简介,请参阅MSDN文章Working with Strings。
答案 2 :(得分:1)
项目+属性,配置属性,常规。它是字符集属性。在确定所有的工作方式后,才创建空项目。虽然最快的学习方法是犯下所有错误。
答案 3 :(得分:1)
一般建议:始终使用MessageBoxW()。使用MBCS设置编译程序的理由很少,字面意思是“文本损坏”。