试图了解#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
其余的线条来自哪里,它们是什么意思?
其余的线条来自哪里
它们由预处理器添加。
它们是什么意思?
源文件名和行号信息由表单行传达
# linenum filename flags
这些被称为线性标记。它们根据需要插入到输出中(但从不在字符串或字符常量内)。它们意味着以下行起源于line linenum的文件filename。 filename永远不会包含任何非打印字符;它们被八进制转义序列取代。