Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.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++ #ifdef和#endif中不可访问的代码是否在编译/链接期间被删除?_C++_C - Fatal编程技术网

C++ #ifdef和#endif中不可访问的代码是否在编译/链接期间被删除?

C++ #ifdef和#endif中不可访问的代码是否在编译/链接期间被删除?,c++,c,C++,C,#ifdef和#endif中不可访问的代码是否在编译/链接期间被删除,或者即使无法访问,也保留在可执行文件中 #ifdef DEBUG // some debug operations #endif 编译后,调试操作代码是否仍保留在没有调试标志的情况下,如果保留,是否会影响发布版本的性能 编辑: 如果有一些模块只在调试操作中使用,并且如果它链接到程序中,这会影响性能吗?预处理器将完全删除这些代码-编译器甚至无法看到它 例如,您可以使用g++-e查看预处理器的功能以及编译器可以看到的内容。预处理

#ifdef和#endif中不可访问的代码是否在编译/链接期间被删除,或者即使无法访问,也保留在可执行文件中

#ifdef DEBUG
// some debug operations
#endif
编译后,调试操作代码是否仍保留在没有调试标志的情况下,如果保留,是否会影响发布版本的性能

编辑:


如果有一些模块只在调试操作中使用,并且如果它链接到程序中,这会影响性能吗?

预处理器将完全删除这些代码-编译器甚至无法看到它


例如,您可以使用
g++-e
查看预处理器的功能以及编译器可以看到的内容。

预处理器会删除它(使用外部预处理器时,通常会替换空行)。

如果有一些模块仅用于调试操作,并且它链接到程序中,这会影响性能吗?@Atomble:取决于您对模块的定义以及它们的链接方式。一个不需要的DLL将使应用程序启动时间减少很短的时间。但未执行的代码不会影响应用程序的运行时性能。@Atomble:假设调试模块的大小不足以导致内存被调出,则不会。链接未使用的模块丝毫不会影响性能。假设我有一个单元测试模块,它被编译成unittest.o,只是静态链接到main。o@Atomble:如果未使用,很可能链接器会将其完全删除。无论哪种方式,它都不会影响性能。