#ifdef和#endif中的无法访问的代码是否在编译/链接时被删除,或者保存在可执行文件中,即使它无法访问?
#ifdef DEBUG
// some debug operations
#endif
编译之后是否仍然保留调试操作代码而没有DEBUG标志,如果它会影响发布版本的性能吗?
编辑:
如果某些模块仅在调试操作中使用,并且如果它被链接到程序中,这会影响性能吗?
答案 0 :(得分:11)
预处理器将完全删除此类代码 - 编译器甚至无法看到它。
你可以,例如使用g++ -E
来查看预处理器的功能,以及编译器可以看到的内容。
答案 1 :(得分:1)
它被预处理器删除(使用外部预处理器,空行通常被替换)。