G++ 将已处理的前置处理器指令包括到'g++-E';输出
在使用G++ 将已处理的前置处理器指令包括到'g++-E';输出,g++,c-preprocessor,G++,C Preprocessor,在使用g++编译第三方库时,我遇到了一些预处理问题 我可以在-E输出中看到,用#ifndef符号包装的某个标题被绕过。显然,这个符号是在别的地方定义的。 但是我看不到哪里,因为-E输出中不存在经过处理的指令 是否有方法将它们(可能作为注释)包括在内?不,没有标准方法将预处理的指令作为注释 但是,您可以使用g++-C-E和行号(以#开头的行输出)以及注释(然后将其复制到预处理表单) 您还可以使用-H选项(获取包含的文件)我找到的最接近的选项是一系列选项: -dM转储定义的所有宏 -dD显示它们的
g++
编译第三方库时,我遇到了一些预处理问题
我可以在-E
输出中看到,用#ifndef符号包装的某个标题被绕过。显然,这个符号是在别的地方定义的。
但是我看不到哪里,因为-E
输出中不存在经过处理的指令
是否有方法将它们(可能作为注释)包括在内?不,没有标准方法将预处理的指令作为注释
但是,您可以使用g++-C-E
和行号(以#
开头的行输出)以及注释(然后将其复制到预处理表单)
您还可以使用-H
选项(获取包含的文件)我找到的最接近的选项是一系列选项:
-dM
转储定义的所有宏
-dD
显示它们的定义位置(转储#define
指令)
-dU
显示它们的使用位置(代替#if(n)def
,它输出#define
或#unde
,具体取决于宏是否已定义)
将I
添加到其中任何一个也会转储#include
指令
缺点是一次只能使用三个选项中的一个,它们会抑制正常输出
另一个不易理解的缺点是-dD
和-dU
不包括预定义的宏