如何在构建之后在编译时宏中删除代码

时间:2010-08-30 12:11:40

标签: c++ c

我确实在代码中说#if A并创建了一个lib。

现在由于某种原因,我确实想要从包含#if A的lib中取出代码而不重新编译lib。

我可以使用某些命令来执行此操作。

此致 基兰

2 个答案:

答案 0 :(得分:5)

所以你说你有一个像这样的.c文件:

<list of code>
#if A
 <optional code>
#endif

您将此.c文件编译为已编译的库(.lib,.dll,.so,.o或.a),并且要从编译的库中删除<optional code>?它无法完成,因为编译库中不存在#if A指令;它在编译时被静态处理(理论上,在预处理期间编译之前)并且完全包含或完全从编译库中排除。改变它的唯一方法是重新编译。

答案 1 :(得分:1)

只是不要使用宏,使用变量。