所以,我在VS Code的C ++项目中使用WinAPI。我注意到的一点是标准的C ++ intellisense与WinAPI的许多宏不能很好地搭配。
例如,
#include <windows.h>
int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
MessageBox(0, "This is a test", "Test", MB_OK|MB_ICONINFORMATION);
return 0;
}
在上面的代码中,错误曲线出现在“This is a test”和“Test”下,因为VS Code的intellisense期望这些参数是LPCWSTR类型,而是将它们解释为const char *。
情况并非如此,因为“这是一个测试”,“测试”作为LPCWSTR有效,程序编译并运行完全正常。
无论如何,我可以让intellisense引擎识别出这不是错误吗?或者我是否必须完全禁用错误曲线?
答案 0 :(得分:1)
抱歉,在这种情况下VS正常运行。
“这是一个测试”是一个char const *(LPCSTR),而不是LPCWSTR。对于宽字符串文字,添加'L'前缀:L“这是一个测试”。