WeHack BBS
修改C/C++源码而不改变可执行文件并不容易 - 可打印的版本

+- WeHack BBS (https://bbs.wehack.space)
+-- 版块: 计算机技术 (https://bbs.wehack.space/forum-5.html)
+--- 版块: 程序设计讨论区 (https://bbs.wehack.space/forum-14.html)
+--- 主题: 修改C/C++源码而不改变可执行文件并不容易 (/thread-334.html)



修改C/C++源码而不改变可执行文件并不容易 - vimacs - 03-29-2022

我本来想着加些条件编译宏,不改变最终代码,但产生的二进制文件不同。
我想到 __LINE__ 会因为代码插入改变源码行号,导致代码不同,但是代码里没有用到它。之后我直接用预处理器产生预处理后的文件,才发现原来 assert 也会引进行号。

查 assert 的文档,发现定义 NDEBUG 宏可以阻止 assert 生成代码,于是可以使可执行文件不变。