【发布时间】:2019-05-13 19:44:13
【问题描述】:
我试图检查为一个简单的 hello world 程序生成的翻译单元的样子。 所以,我在 test.cpp 中写了下面的代码。
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello World"<<endl;
}
然后我使用带有 -E 选项的 g++ 编译上述文件并将数据输出到临时文件。 该文件包含以 # 符号开头的行之间的 c++ 代码。
如下所示,
# 1 "test.cpp"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 1 "<command-line>" 2
# 1 "test.cpp"
# 1 "/usr/include/c++/8/iostream" 1 3
# 36 "/usr/include/c++/8/iostream" 3
- 这些行是什么意思?
- 是否有我应该阅读的文件,或者我必须获得任何特定主题的知识才能理解此文件?
【问题讨论】:
-
以#开头的行是预处理指令,如
#include和#ifdef等 -
“有什么我应该阅读的文件”我会以en.wikipedia.org/wiki/C_preprocessor开始
-
@Slava,翻译单元是在预处理后生成的,所以这些不是预处理器指令。
标签: c++ g++ translation-unit