我理解VC ++会让你发出C ++源文件,这些文件是预处理器操作的结果,例如:宏被扩展并包括“在线复制粘贴”。
是否可以将此限制为仅嵌入包含的文件,这些文件是我自己项目中的文件而不是标准库?
答案 0 :(得分:2)
从外面看,您无法判断正在预处理内容的语法格式(<>或"")。除非预处理器公开了一种API,否则这不是这种情况。
我可以提出的一个不那么优雅(并且不严格正确)的解决方案是索引所有标准头文件的预处理版本(没有那么多),并且在预处理感兴趣的源代码之后,您可以运行字符串匹配脚本来检测已知文件并从最终输出中删除相应的内容。
请注意,这是有缺陷的,因为#include
系统纯粹是文本的,并且受到包含和订购时所定义的任何宏(un)的影响。但是,根据代码的复杂性,您可能会对此进行合理的结果。
顺便问一下,请问你的任务的最终目标是什么?
修改或者实际上......也许您可能先前过滤了来源以删除不需要的#include
,然后将其提交给预处理?< / p>