如何定义"L"宏(?)?

Fab*_*cio 7 c winapi

static TCHAR szWindowClass[] = L"foo";
Run Code Online (Sandbox Code Playgroud)

L被"粘在"字符串上"foo".怎么会?像我习惯的功能或宏是类似的东西L("foo");

任何人都可以解释我怎么会粘在绳子上?

Mat*_*lia 15

L它不是一个宏,它只是宽(wchar_t"Unicode")字符串文字的标准前缀; 这个概念类似于文字的L后缀,long int文字的f后缀float等等1.

顺便说一句,如果你使用TCHARs,你不应该L直接使用; 相反,你应该使用_T()或者TEXT()宏,L如果应用程序是为"for Unicode"编译的(即TCHAR定义为WCHAR),则在文字的开头添加,或者如果编译目标是"ANSI"(TCHAR定义为CHAR),则不添加任何内容.


  1. 虽然在我看来这是令人困惑的 - 为什么算术类型的后缀和宽字符串文字的前缀?

  • "为什么算术类型的后缀和宽字符串文字的前缀"A:简化标记化并使其快速. (2认同)