[英]Simple code will not compile with clang or gcc but it will with g++
[英]Using clang or g++/gcc to print preprocessed code without including files from system paths
目前我想调试我的包含。 为此,我想获得预处理代码,但没有任何系统 header 文件 - 只是我自己的代码。
我用标志"-E"
和"-nostdinc"
试过了。 但后来我得到例如<string>
丢失的错误。 如何禁用此类预处理错误?
如何禁用此类预处理错误?
您可以创建一组名称与标准库头文件匹配的头文件。 将这些标头放在包含目录中。 让文件为空。
使用 clang 或 g++/gcc 打印预处理代码,而不包括系统路径中的文件
除了空的 header 方法之外,我还可以看到其他两种方法:
不要使用编译器的完整预处理器,而是编写您自己的预处理器,它只执行您想要的处理子集。
或者,编写一个后预处理器,从预处理结果中删除标准 header 内容。
(这不是一个真正的答案 - 只是一个“黑客”)
为了解决这个问题,我通过以下方式创建了一个包含所有系统标题的文本文件:
rem my GCC STL-PATH
cd Z:\usr\include\c++\10
dir /b > F:\DummySTL\files.txt
然后我执行了以下代码行:
for /f "delims=" %F in (files.txt) do copy nul "%F"
这将为文件中的每一行创建一个空文本文件。 现在我可以调用 gcc 或 clang :
-isystem"F:\DummySTL"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.