c++ - 即使 RAPIDJSON_ASSERT 已被重新定义,Rapidjson 仍会中止
问题描述
我将 rapidjson.h 中 RAPIDJSON_ASSERT 的定义修改为:
#define RAPIDJSON_ASSERT(x) (if(!(x)) throw std::logic_error("Rapidjson assertion error") )
但程序仍然在 document.h 第 1103 行中止。有谁知道为什么?谢谢你。
template <typename SourceAllocator>
GenericValue& operator[](const GenericValue<Encoding, SourceAllocator>& name) {
MemberIterator member = FindMember(name);
if (member != MemberEnd())
return member->value;
else {
RAPIDJSON_ASSERT(false); // line 1103. see above note
// This will generate -Wexit-time-destructors in clang
// static GenericValue NullValue;
// return NullValue;
// Use static buffer and placement-new to prevent destruction
static char buffer[sizeof(GenericValue)];
return *new (buffer) GenericValue();
}
}
解决方案
推荐阅读
- css - 如何在文件中提取具有特殊颜色的css规则
- rust - 这种模式可以在 Rust 中实现吗?
- powershell - SSH 客户端到 PowerShell 中的客户端托管
- firebase - 是否可以?在 Firebase 身份验证中创建记录之前发送电子邮件验证?
- javascript - MediaDevice applyConstraints 不起作用
- python - crontab 每分钟而不是每两小时运行一次 python 脚本
- python - 按索引交换列表中的值
- python-3.x - 如何在 openCV tkinter 代码中解决这个问题
- r - 使用 iter 函数的语法是什么
- python - 使用正则表达式打印我拥有的每一行