Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在生成后剥离编译时宏中的代码_C++_C - Fatal编程技术网

C++ 如何在生成后剥离编译时宏中的代码

C++ 如何在生成后剥离编译时宏中的代码,c++,c,C++,C,我确实说过#如果代码中有一个,并生成了一个lib 现在出于某种原因,我确实希望从包含#if A的库中取出代码,而不重新编译库 我可以用一些命令来做这件事吗 问候,, Kiran不要使用宏,使用变量。不要使用宏,使用变量。你是说你有一个.c文件,如下所示: <list of code> #if A <optional code> #endif #如果 #恩迪夫 您将这个.c文件编译到一个已编译的库中(a.lib、.dll、.so、.o或.a),您想从已编译的库中删除

我确实说过#如果代码中有一个,并生成了一个lib

现在出于某种原因,我确实希望从包含#if A的库中取出代码,而不重新编译库

我可以用一些命令来做这件事吗

问候,,
Kiran

不要使用宏,使用变量。

不要使用宏,使用变量。

你是说你有一个.c文件,如下所示:

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

#如果
#恩迪夫

您将这个.c文件编译到一个已编译的库中(a.lib、.dll、.so、.o或.a),您想从已编译的库中删除
?无法执行此操作,因为编译库中不存在
#if
指令;它在编译时(理论上,在预处理过程中编译之前)进行静态处理,或者完全包含在已编译库中,或者完全从已编译库中排除。更改它的唯一方法是重新编译。

那么您是说您有一个.c文件,如下所示:

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

#如果
#恩迪夫

您将这个.c文件编译到一个已编译的库中(a.lib、.dll、.so、.o或.a),您想从已编译的库中删除
?无法执行此操作,因为编译库中不存在
#if
指令;它在编译时(理论上,在预处理过程中编译之前)进行静态处理,或者完全包含在已编译库中,或者完全从已编译库中排除。更改它的唯一方法是重新编译。

您需要指定正在使用的工具链。我使用的是CodeSourcery Sourcery\u G++\u Lite ARM工具链。您需要指定正在使用的工具链。我使用的是CodeSourcery Sourcery\u G++\u Lite ARM工具链。是的,但是对于记录,值得一提的是每次检查A的布尔状态的运行时成本可能微不足道,如果A在编译时被解析,那么就必须使用
extern
ally定义的变量,否则就必须重新编译。当然,拥有一个需要在用户代码中定义变量的库是一种“代码味道”。基本上,我确实希望在不重新编译代码的情况下减小图像大小。使用变量将使代码与图像中的代码保持一致,从而增加大小。用一些命令编译或禁用内存实际上会减少内存的大小。一个千兆字节的内存需要20美元。如果你的时间不够,继续重新编译。是的,但值得一提的是,每次检查A的布尔状态的运行时成本可能微不足道,如果A在编译时被解析。你必须使用
外部定义的变量,或者你也会遇到同样的问题,不得不重新编译。当然,拥有一个需要在用户代码中定义变量的库是一种“代码味道”。基本上,我确实希望在不重新编译代码的情况下减小图像大小。使用变量将使代码与图像中的代码保持一致,从而增加大小。用一些命令编译或禁用内存实际上会减少内存的大小。一个千兆字节的内存需要20美元。如果你的时间不够,继续重新编译。