如何重写C中的断言宏?

ita*_*ayb 6 c assert ndebug ld-preload

我想创建我自己的版本,assert其中它会打印一些日志,以防在NDEBUG模式下调用断言。

我试图做到这LD_PRELOAD一点并重新定义断言宏,但它似乎完全忽略了宏定义,并且覆盖__assert_fail是无关紧要的,因为在NDEBUG.

我怎样才能覆盖libc assert宏?

我不想创建不同的函数,因为项目中已经大量使用了断言。

pas*_*sha -1

您可以检查是否NDEBUG已定义,如果已定义,则打印您想要打印的任何日志。