C 头文件:没有标准库的宏扩展

问题描述

我希望扩展我在 c 头文件中的宏,但到目前为止我也得到了一个标准库。我的 ~200 行文件扩展到 60k 行文件(其中 ~30k 行是空白),其中我只想使用扩展的原始 ~200 行。

有没有允许我不扩展标准库的标志?

目前使用的命令:cl myHeader.h /E > __test.h

扩展到我处理的标头中的行引用类型的示例(省略扩展的代码): #line 688 "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\VC\\Tools\\MSVC\\14.16.27023\\include\\string"

我的最终用例是解析扩展的标头,我相信(但不能确定)大多数宏都是简单的 #define FOO 42 类型扩展,用于填充数组大小。如果我无法让 cl 停止插入标准库,我还有其他选择吗?

最坏的情况是,我可以从底部向上工作并在 #line <num> <path> 上剪辑文件,但与我的文件路径不匹配,但这似乎很不雅。

在 Windows 上使用 MSVC。

解决方法

感谢@Lundin 在上面的评论中。

我错误地认为注释掉编译所需的包含会妨碍预处理器。它什么都不在乎。剥离麻烦的 #includes 是获取宏扩展标题的一种非常简单的方法。它仍然会有 #line <number> <path> 和空行,但这些很容易去掉。