我希望以下代码可以编译通过。然而,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
?
我的完整代码如下,将std::uint32_t替换为typedef,但在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;
}
error = GetSomething() ? EOK : ERROR;
也会导致编译错误,加入大括号也不能解决问题。 - Marc van Leeuwen