首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何仅在本地标头上运行预处理器?

如何仅在本地标头上运行预处理器?
EN

Stack Overflow用户
提问于 2014-01-03 02:33:42
回答 3查看 6K关注 0票数 27

我希望预处理器读取本地标头的includes,但忽略系统标头的includes。换句话说,我如何让预处理器跳过表单的预处理指令:

代码语言:javascript
复制
#include <h-char-sequence> new-line

但是仍然处理表单的指令:

代码语言:javascript
复制
#include "q-char-sequence" new-line

作为代码示例,请查看以下文件:

代码语言:javascript
复制
#include <iostream>     //system
#include "class_a.hpp"  //local
#include <string>       //system
#include "class_b.hpp"  //local

int main() {}

如何获得预处理器的输出为:

代码语言:javascript
复制
#include <iostream>
class A{};
#include <string>
class B{};

int main() {}

本地包含文件可能包含其他本地包含文件,预处理器会递归地将它们全部放入其中;这与通常的做法非常相似。它仍然会打印所有的系统文件头,但不会显示它们的内容。

在gcc上,到目前为止,我的调用是这样的:g++ -E -P main.cpp,其中-E在预处理之后停止,而-P排除了行标记的生成。

我似乎找不到一个可以排除系统头处理的标志。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20889460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档