我在多线程 C 应用程序中发现了这个。作者评论说它用于在自定义断言函数中造成线程崩溃。 GCC 对此没有问题,但 clang 发出以下警告:
note: consider using __builtin_trap() or qualifying pointer with 'volatile'
对于断言函数的每次使用,还发出其中之一:
warning: indirection of non-volatile null pointer will be deleted, not trap
这里发生了什么? __builtin_trap 是特定于 clang 的吗?我应该使用它吗?
写信给NULL
地址不能保证可靠地使您的程序崩溃,因此海湾合作委员会介绍__builtin_trap http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html为了那个原因。
看起来 clang 决定更进一步,完全消除此类写入,几乎迫使您使用__builtin_trap
。他们的另一种选择NULL
to volatile
与相比,指针看起来不吸引人__builtin_trap
,因为它“仅仅是”一种未定义的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)