我希望预处理器读取本地标头的includes,但忽略系统标头的includes。换句话说,我如何让预处理器跳过表单的预处理指令:
#include <h-char-sequence> new-line
但是仍然处理表单的指令:
#include "q-char-sequence" new-line
作为代码示例,请查看以下文件:
#include <iostream> //system
#include "class_a.hpp" //local
#include <string> //system
#include "class_b.hpp" //local
int main() {}
如何获得预处理器的输出为:
#include <iostream>
class A{};
#include <string>
class B{};
int main() {}
本地包含文件可能包含其他本地包含文件,预处理器会递归地将它们全部放入其中;这与通常的做法非常相似。它仍然会打印所有的系统文件头,但不会显示它们的内容。
在gcc上,到目前为止,我的调用是这样的:g++ -E -P main.cpp
,其中-E
在预处理之后停止,而-P
排除了行标记的生成。
我似乎找不到一个可以排除系统头处理的标志。
https://stackoverflow.com/questions/20889460
复制相似问题