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

C++ struct initialization assertion fails

本文关键字:失败 断言 初始化 结构 C++      更新时间:2023-10-16
#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(): Assertion 'structu.z == 0 failed.Aborted'

您想要:

 assert(structu.z == 0);

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

assert(structu.z == 0)应该工作,因为成员z将被值初始化。

我认为"successful"是指不会创建错误消息。你可能想要:

assert(structu.z == 0);

请注意,我使用的是==,而不是=

这个断言永远不应该触发,因为给定的代码保证structu.z等于0