C ++“#include”输出说明

blu*_*ote 10 c++ gcc g++

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

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

#include otherfile
abcd
Run Code Online (Sandbox Code Playgroud)

我运行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
Run Code Online (Sandbox Code Playgroud)

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

eer*_*ika 9

其余的行是从哪里来的

它们由预处理器添加。

它们是什么意思?

根据文档

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

# linenum filename flags
Run Code Online (Sandbox Code Playgroud)

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