C ++ struct初始化断言失败

时间:2011-05-30 16:54:43

标签: 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(): Assertion 'structu.z == 0 failed.Aborted'

3 个答案:

答案 0 :(得分:5)

你想:

 assert(structu.z == 0);

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

答案 1 :(得分:3)

通过“成功”,我假设您的意思是创建错误消息。你可能想要:

assert(structu.z == 0);

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

此断言不应该触发,因为在给定代码的情况下,structu.z保证等于0

答案 2 :(得分:3)

assert(structu.z == 0)应该有效,因为成员z会被初始化值。