c++ - 在 VC++ 中找不到 ascii 字符串的 _assert()
问题描述
根据宏的MSDN 文档,assert
它同时支持_assert()
[用于 ASCII 字符串] 和_wassert()
[用于 UNICODE 字符串]。但是在assert.h
Windows Kit 文件夹中的文件中,它的定义如下:
#define assert(expression) (void)( \
(!!(expression)) || \
(_wassert(_CRT_WIDE(#expression), _CRT_WIDE(__FILE__), (unsigned)(__LINE__)), 0) \
)
我的项目需要 ASCII 版本的断言。是否有其他定义它的头文件_assert()
?
解决方案
在 MSDN 文档页面上,它说:
函数的签名
_assert
在头文件中不可用。
所以你的问题的答案是:“不”。此外,MSDN 页面告诉您:
_assert 和 _wassert 函数是内部 CRT 函数。它们有助于最小化目标文件中支持断言所需的代码。我们不建议您直接调用这些函数。
如果你想打印一条 ASCII 错误消息,然后死掉,我建议使用 MessageBox 后跟 ExitProcess (用于 GUI 应用程序)或 fputs 后跟 abort (用于控制台应用程序)。
推荐阅读
- go - 如何在 gRPC Protobuf 中为接口创建类型?
- javascript - 如果 HTML5 形式的文本框值是 x,那么 y: 这可能吗?
- html - 当父级的 z-index 与另一个 div 相等时,子级的 z-index 较高会隐藏绝对子级
- android - 在我的 react native 项目中哪里可以找到 tsconfig.json 文件
- kubernetes - dask.distributed 集群可以独立地自动缩放不同的工作人员吗?
- mysql - MySQL中的重复主键
- c# - 将各种类型的日期时间转换为dd/mm/yyyy
- android - 我正在寻找一种在接到电话后立即向电话收件人播放音频消息的方法
- c++ - 如何在 64 位 vb.net windows 应用程序中引用 32 位 dll
- core-data - 如何使用 CloudKit 播种数据?