C 控制如何显示或记录断言失败消息

C 控制如何显示或记录断言失败消息,c,macos,assert,C,Macos,Assert,有没有一种方法可以控制来自失败断言(assert.h)的消息的显示方式 在OSX上,它们被写入stderr。在Windows上,我注意到出现了一个对话框并显示消息。我可以使用自己的自定义显示或记录方法吗 我希望答案取决于平台,因此当使用系统编译器时,这个问题专门针对OSX 注: 仅将输出重定向到文件是不够的。我想提供我自己的功能来显示或记录消息 我不能简单地重新定义assert宏,因为每个后续的#include 我需要它来处理非我自己的库中的断言失败。对于我自己的代码,我总是可以使用我自己的

有没有一种方法可以控制来自失败断言(
assert.h
)的消息的显示方式

在OSX上,它们被写入stderr。在Windows上,我注意到出现了一个对话框并显示消息。我可以使用自己的自定义显示或记录方法吗

我希望答案取决于平台,因此当使用系统编译器时,这个问题专门针对OSX


注:

  • 仅将输出重定向到文件是不够的。我想提供我自己的功能来显示或记录消息

  • 我不能简单地重新定义
    assert
    宏,因为每个后续的
    #include

  • 我需要它来处理非我自己的库中的断言失败。对于我自己的代码,我总是可以使用我自己的特殊assert宏,它的名称不是
    assert


您可以随时使用自己的特殊assert宏,但您试图拦截的第三方库也可以。@n.m.这很清楚。但我知道我正在处理的库不会这样做。为什么您首先需要更改输出?@2501以便我可以看到它。如果您对细节感兴趣:代码正在从中使用。只有在命令行模式下运行Mathematica,我才能看到stderr,这非常不方便。我希望能够在Mathematica的笔记本界面(Mathematica自己的“终端”,如果您愿意的话)中看到消息。我认为使用C库是不可能的。您可以通过不可移植的方式完成:将stderr重定向到stdout。