C++ 结构初始化断言失败

标签 c++ struct assert

#include <cassert>
#include <string>
struct AStruct 
{ 
    int x; 
    char* y; 
    int z; 
};
int main()
{ 
    AStruct structu = {4, "Hello World"};
    assert(structu.z == ???);
}

我应该写什么来代替 ??? 才能获得成功的断言?
我使用了 assert(structu.z == 0); 但不幸的是得到了错误
int main(): 断言 'structu.z == 0 failed.Aborted'

最佳答案

你想要:

 assert(structu.z == 0);

您的代码分配给 z 成员而不是测试它。如果你确实收到了你编辑的问题说你收到的消息,那么你的编译器就坏了。是哪一个?

关于C++ 结构初始化断言失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6178874/

相关文章:

c++ - 如何检测与 C++、OpenGL 和 freeglut 的冲突?

c++ - doxygen 方程显示不正确

c++ - 哪个草案最接近 C++14 标准?

c++ - 发送包含其他结构的结构作为 ZeroMQ 消息

带小数的 PHP 和单元测试断言

ruby-on-rails - Rails:Test::Unit 为什么我需要在任何其他断言之前断言某些内容是有效还是无效

scala - 如何检查构造函数参数并抛出异常或在 Scala 中的默认构造函数中进行断言?

c++ - 如何定义声明的函数 - 具有未命名模板参数的模板结构成员?

c - C中Typedef结构体的使用

c - 与 Codex C 交换结构体中的单词