什么是C++预处理器输出中的<内置>?

Gab*_*ern 9 c++ c-preprocessor

简介:C++预处理器输出包含一些说明的行<built-in>.我很想知道它们的用途.

细节:

当我在一个文件名为编译下面的代码test.cppclang++ -E(输出g++是相似的):

#include <iostream>

int main()
{
  std::cout << "Hello World!" << std::endl;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

前几行输出如下:

#1"test.cpp"
#1"test.cpp"1
#1"<内置>"1
#1"<内置>"3
#156"<内置>"3
#1"<命令line>"1
#1"<内置>"2
#1"test.cpp"2

我的问题是这些<built-in>陈述是什么意思.

per*_*eal 4

宏扩展为“1”,如果是内置的,则默认定义该宏,例如,__cplusplus如果是命令行,则在命令行上定义该宏,即,-DMACRO=1

您可以看到预定义宏的列表:

cpp -dM foo.h  
Run Code Online (Sandbox Code Playgroud)

  • 看起来我还需要 -E 开关来获得人类可读的输出,至少对于“.cpp”文件来说是这样。另外,输出出现的顺序是否与应用的宏相对应?在我包含的测试用例中,我试图弄清楚 `# 156 "&lt;built-in&gt;" 3` 正在做什么。 (2认同)