首页 > 解决方案 > 在 VC++ 中找不到 ascii 字符串的 _assert()

问题描述

根据宏的MSDN 文档assert它同时支持_assert()[用于 ASCII 字符串] 和_wassert()[用于 UNICODE 字符串]。但是在assert.hWindows Kit 文件夹中的文件中,它的定义如下:

 #define assert(expression) (void)(                                                       \
            (!!(expression)) ||                                                              \
            (_wassert(_CRT_WIDE(#expression), _CRT_WIDE(__FILE__), (unsigned)(__LINE__)), 0) \
        )

我的项目需要 ASCII 版本的断言。是否有其他定义它的头文件_assert()

标签: c++visual-c++visual-studio-2015assert

解决方案


在 MSDN 文档页面上,它说:

函数的签名_assert在头文件中不可用。

所以你的问题的答案是:“不”。此外,MSDN 页面告诉您:

_assert 和 _wassert 函数是内部 CRT 函数。它们有助于最小化目标文件中支持断言所需的代码。我们不建议您直接调用这些函数。

如果你想打印一条 ASCII 错误消息,然后死掉,我建议使用 MessageBox 后跟 ExitProcess (用于 GUI 应用程序)或 fputs 后跟 abort (用于控制台应用程序)。


推荐阅读