c++ - 使用 clang 或 g++/gcc 打印预处理代码而不包括来自系统路径的文件

标签 c++ preprocessor

目前我想调试我的包含。为此,我想获取经过预处理的代码,但没有任何系统头文件 - 只有我自己的代码。

我用标志 "-E" 试过了和 "-nostdinc" .但是后来我收到错误,例如 <string>不见了。如何禁用此类预处理错误?

最佳答案

How to disable such preprocessing errors?

您可以创建一组名称与标准库 header 匹配的 header 文件。将这些 header 放在 include 目录中。让文件为空。

Using clang or g++/gcc to print preprocessed code without including files from system paths

除了空头方法之外,我还可以看到另外两种方法:

  • 与其使用编译器的完整预处理器,不如编写您自己的预处理器,它只执行您想要的处理子集。

  • 或者,编写一个后预处理器,从预处理结果中删除标准 header 内容。

关于c++ - 使用 clang 或 g++/gcc 打印预处理代码而不包括来自系统路径的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62578093/

相关文章:

c++ - CLANG编译器7.0.0编译一段C++代码会崩溃

ios - 如何在头文件中使用预处理器检查?

makefile - cpp 预处理器为 Fortran 编译器添加不需要的文本

preprocessor - 如何在 devenv 命令行中添加预处理器 #define?

preprocessor - 如何使用 Java 处理来自 OpenStreetMap 的 map 数据?

c++ - 为数组中的每个对象调用析构函数

c++ - 从控制台读取一行

c++ - "address not from malloc()"使用电子围栏出错

c++ - 为什么访问未初始化的指针不显示错误?

c - cpp 和 gcc -E 的区别