c ++“#include”输出说明

问题描述 投票:10回答:1

试图了解#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

其余的线条来自哪里,它们是什么意思?

c++ gcc g++
1个回答
9
投票

其余的线条来自哪里

它们由预处理器添加。

它们是什么意思?

根据documentation

源文件名和行号信息由表单行传达

# linenum filename flags

这些被称为线性标记。它们根据需要插入到输出中(但从不在字符串或字符常量内)。它们意味着以下行起源于line linenum的文件filename。 filename永远不会包含任何非打印字符;它们被八进制转义序列取代。

© www.soinside.com 2019 - 2024. All rights reserved.