IND*_*000 3 c c++ winapi widechar c-preprocessor
#define CONST_FILENAME "okay.dat"
LPCWSTR lpFilename=L CONST_FILENAME; //obviously doesn't work
Run Code Online (Sandbox Code Playgroud)
基本上,我如何得到相当于:
LPCWSTR lpFilename=L"okay.dat";
Run Code Online (Sandbox Code Playgroud)
用#define?
#define GLUE(x,y) x##y
#define W(x) GLUE(L,x)
#define CONST_FILENAME "okay.dat"
int main() {
const wchar_t* lpFilename = W(CONST_FILENAME);
const wchar_t* lpFilename = W("okay.dat");
wchar_t one_character = W('?');
}
Run Code Online (Sandbox Code Playgroud)
http://ideone.com/2EzB6上的编译证明.这正是微软_T宏的工作方式,除了我无条件地定义它,所以你可以使用它来获得宽字符串,即使不在MSVC"Unicode"构建中.至于为什么需要GLUE宏,我从来没有听过对我有意义的解释,但如果没有它,宏将不会扩展,所以它是必需的.看起来这里有详细信息:##预处理器运算符的应用程序和陷阱需要考虑什么?