gpt4 book ai didi

c++ - if 和 else 没有大括号

转载 作者:IT老高 更新时间:2023-10-28 12:29:35 47 4
gpt4 key购买 nike

我希望以下代码能够编译。 Clang 和 VC++ 都在 else 的行上给我一个错误。

void MyFunction(std::int32_t& error)
{
std::int32_t variable = 0;
if(GetSomething())
error = EOK;
else
error = ERROR;
}

如果我在 error = EOK; 周围加上花括号,那么它会编译。为什么VC++会说:

illegal else without matching if

?


我的完整代码如下,用 typedef 替换 std::uint32_t。在 VC++ 中它仍然给出同样的错误。

using sint32 = int;

#define ERROR 5;
#define EOK 0;

bool GetSomething();

void MyFunction(sint32& error)
{
sint32 variable = 0;
if (GetSomething())
error = EOK;
else
error = ERROR;
}

最佳答案

如果你对 EOK 的定义如下:

#define EOK 0;

那么它会导致这种类型的错误,因为它在到达else之前强制终止if语句,使其成为没有匹配if的else。宏替换后编译器看到这段代码:

if(GetSomething())
error = 0;;
else

关于c++ - if 和 else 没有大括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26223907/

47 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com