在 Xcode 中导致硬中断的指令是什么?例如,在 Visual Studio 下,我可以执行“_asm int 3”或“DebugBreak()”。在某些 GCC 实现下,它是 asm("break 0") 或 asm("trap")。
我在 Xcode 下尝试了各种组合,但没有任何运气。(内联汇编器工作正常,所以这不是语法问题)。
作为参考,这是一个断言宏。我不想将 assert.h 中的定义用于可移植性,并且因为它们似乎在 XCode 提供的版本中执行 abort()。
约翰 - 超级,干杯。作为参考,int 3 语法是 Intel Mac 和 iPhone 所需的语法。
克里斯 - 感谢您的评论,但有很多原因可以避免将代码库移植到不同平台的标准 assert() 函数。如果您在滚动自己的断言时遇到了麻烦,通常是因为您希望保留其他功能(日志记录、堆栈展开、用户交互)。
您尝试通过“__assert”或类似的实现来替换处理程序的建议是不可移植的。标准的“断言”通常是一个宏,虽然它可能映射到 Mac 上的 __assert,但在其他平台上却没有.