我期望下面的代码进行编译。 Clang和VC++都给我一个错误else
。如果和没有大括号
void MyFunction(std::int32_t& error)
{
std::int32_t variable = 0;
if(GetSomething())
error = EOK;
else
error = ERROR;
}
如果我把大括号括在error = EOK;
左右,那就编译。为什么VC++说:
非法否则如果没有
匹配?
我的完整代码如下,用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;
}
我闻宏老鼠。 – 2014-10-06 20:01:35
什么是EOK(或GetSomething)?也许它的一些宏观定义 – marcinj 2014-10-06 20:01:59
@Graznarak发布完整的源代码,包括你定义的任何宏,因为这个源码本身就为我编译 – 2014-10-06 20:02:53