#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'
答案 0 :(得分:5)
你想:
assert(structu.z == 0);
您的代码分配给z成员而不是测试它。如果您确实收到了编辑问题所说的消息,那么您的编译器就会崩溃。它是哪一个?
答案 1 :(得分:3)
通过“成功”,我假设您的意思是不创建错误消息。你可能想要:
assert(structu.z == 0);
请注意,我使用的是==
,而不是=
。
此断言不应该触发,因为在给定代码的情况下,structu.z
保证等于0
。
答案 2 :(得分:3)
assert(structu.z == 0)
应该有效,因为成员z
会被初始化值。