C++ 如何仅对某些(#if/#endif)指令应用C预处理器?

C++ 如何仅对某些(#if/#endif)指令应用C预处理器?,c++,c-preprocessor,C++,C Preprocessor,我想知道这是否可能,如果是的话,我如何才能在计算机上运行一个C预处理器,比如cpp C++源文件,只处理条件指令,如:如果我等其他的 指令在输出文件中保持不变 我正在对C代码进行分析,但没有C预处理器。我的想法是在C文件上运行一个C预处理器,只处理条件句。这样,例如#region指令将保持不变 在文件中,但cpp似乎删除了#区域。您可以使用g++-E选项在预处理阶段后停止 -E->在预处理阶段后停止。输出以预处理源代码的形式发送到标准输出 您可以使用g++-E选项在预处理阶段后停止 -E->在预

我想知道这是否可能,如果是的话,我如何才能在计算机上运行一个C预处理器,比如cpp C++源文件,只处理条件指令,如:如果我等其他的 指令在输出文件中保持不变

我正在对C代码进行分析,但没有C预处理器。我的想法是在C文件上运行一个C预处理器,只处理条件句。这样,例如#region指令将保持不变
在文件中,但cpp似乎删除了#区域。

您可以使用g++-E选项在预处理阶段后停止

-E->在预处理阶段后停止。输出以预处理源代码的形式发送到标准输出


您可以使用g++-E选项在预处理阶段后停止

-E->在预处理阶段后停止。输出以预处理源代码的形式发送到标准输出


您可能正在寻找以下工具:

CON是一种用于分析基于C或C++源代码的预处理器配置的软件工程工具。它的主要用途是通过消除与指定配置相关的任何冗余部分来简化源代码体


它被精确地设计为处理
#if
#ifdef
预处理器行,并相应地删除代码,但它还有许多其他可能的用途。

您可能正在寻找以下工具:

CON是一种用于分析基于C或C++源代码的预处理器配置的软件工程工具。它的主要用途是通过消除与指定配置相关的任何冗余部分来简化源代码体


它被精确地设计为处理
#if
#ifdef
预处理器行,并相应地删除代码,但它还有许多其他可能的用途。

linux unifdef命令可以满足您的需要:

即使您不在linux上,web上也有可用的源代码


顺便说一句,这是另一个问题的重复:

linux unifdef命令执行您想要的操作:

即使您不在linux上,web上也有可用的源代码


顺便说一句,这是另一个问题的重复:

哦,这和我过去的任务是一样的。我试过cppunifdefcoan工具——它们都偶然发现了特殊的C预处理器,比如#region。最后,我决定自己做一个:


与前面提到的cpp工具相比,该工具有一组非常简单的选项,但它完全兼容C#预处理器语法。

哦,这与我过去的任务相同。我试过cppunifdefcoan工具——它们都偶然发现了特殊的C预处理器,比如#region。最后,我决定自己做一个:


与前面提到的cpp工具相比,该工具有一组非常简单的选项,但它完全兼容C#预处理器语法。

“。但是cpp似乎删除了#region”,g++是否不使用它?@user2864740,region特定于vc++编译器,对吗?是否使用vc++编译?
#region
是C#支持的指令,因此如果希望分析C#文件,将其剥离可能会有问题。(我不是问这个问题的人。)“。但是cpp似乎删除了#region”,g++是否不去管它?@user2864740,region是特定于vc++编译器的,对吗?是否使用vc++编译?
#region
是C#支持的指令,因此如果希望分析C#文件,将其剥离可能会有问题。(我不是问这个问题的人。)C有
\if
\endif
等。C的可能复制有
\if
\endif
等。优秀的可能复制!看起来和我想要的一模一样,但不幸的是,它看起来不适用于Mac OS。我现在试着看看我是否能编译它。得到一些错误。你在Mac OS X上试用过吗?或者你知道Mac还有其他替代品吗?@Ali,没有,我再也没有Mac了。很抱歉但是从sourceforge页面看,项目似乎处于活动状态,因此您可能希望向开发人员发送电子邮件,指定您得到的编译错误。如果具备了所有的先决条件,那么为MacOSX编译软件包通常不会太困难,fwiw。祝你好运。其中一个类中似乎与迭代器类型不兼容。我应该调查一下或者联系开发者。谢谢你的帮助!杰出的看起来和我想要的一模一样,但不幸的是,它看起来不适用于Mac OS。我现在试着看看我是否能编译它。得到一些错误。你在Mac OS X上试用过吗?或者你知道Mac还有其他替代品吗?@Ali,没有,我再也没有Mac了。很抱歉但是从sourceforge页面看,项目似乎处于活动状态,因此您可能希望向开发人员发送电子邮件,指定您得到的编译错误。如果具备了所有的先决条件,那么为MacOSX编译软件包通常不会太困难,fwiw。祝你好运。其中一个类中似乎与迭代器类型不兼容。我应该调查一下或者联系开发者。谢谢你的帮助!