试图了解#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
其余几行是从哪里来的,它们是什么意思?
答案 0 :(得分:9)
其余各行从何而来
它们是由预处理器添加的。
什么意思?
源文件名和行号信息通过以下格式的行传达
# linenum filename flags
这些称为线标记。它们根据需要插入到输出中(但绝不能在字符串或字符常量中插入)。它们的意思是,以下行起源于文件名filename在linenum行。 filename绝不会包含任何非打印字符;它们被替换为八进制转义序列。