定义

tchar.h

1
2
#define __T(x)      L ## x
#define _T(x) __T(x)

疑问

  • 为什么不直接定义#define _T(x) L ## x呢?

    因为在处理类似_T(__FILE__)时,会被拓展成L__FILE__,而L__FILE__则是未定义标识符

    • 为什么这样能做到?

      _T(__FILE__)先拓展__FILE__,在插入到该表达式,然后进行合并操作

参考

  1. http://cpp.ezbty.org/myfiles/boost/libs/wave/doc/macro_expansion_process.html
  2. https://gcc.gnu.org/onlinedocs/cppinternals/Macro-Expansion.html
  3. https://msdn.microsoft.com/zh-cn/library/09dwwt6y.aspx
  4. https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html

留言