繁体   English   中英

在编译/链接期间,是否会删除#ifdef和#endif中无法访问的代码?

[英]Does unreachable code within #ifdef and #endif get removed during compile/link time?

#ifdef和#endif中无法访问的代码会在编译/链接时被删除,还是被保存在可执行文件中,即使无法访问也是如此?

#ifdef DEBUG
// some debug operations
#endif

没有DEBUG标志的编译后,调试操作代码是否仍然保留,如果是,它将影响发行版的性能吗?

编辑:

如果仅在调试操作中使用了某些模块,并且将其链接到程序中,这会影响性能吗?

预处理器将完全删除此类代码-编译器甚至看不到它。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM