C ++“#include”输出说明

时间:2019-03-12 13:41:58

标签: c++ gcc g++

试图了解#include的工作方式。我正在阅读,在进行过程中,它只是将自己替换为引用文件的内容。

要验证,我创建了两个文件。名为otherfile的文件仅包含字符串1234,而文件test.cpp包含

#include otherfile
abcd

我运行g++ -E test.cpp,得到的输出是

# 1 "test.cpp"
# 1 "<built-in>" 1
# 1 "<built-in>" 3
# 373 "<built-in>" 3
# 1 "<command line>" 1
# 1 "<built-in>" 2
# 1 "test.cpp" 2
# 1 "./wtf" 1
1234
# 2 "test.cpp" 2
abcd

其余几行是从哪里来的,它们是什么意思?

1 个答案:

答案 0 :(得分:9)

  

其余各行从何而来

它们是由预处理器添加的。

  

什么意思?

按照documentation

  

源文件名和行号信息通过以下格式的行传达

# linenum filename flags
     

这些称为线标记。它们根据需要插入到输出中(但绝不能在字符串或字符常量中插入)。它们的意思是,以下行起源于文件名filename在linenum行。 filename绝不会包含任何非打印字符;它们被替换为八进制转义序列。