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