Я ожидаю, что следующий код будет компилироваться. Clang и VС++ дают мне ошибку в строке с else
.
void MyFunction(std::int32_t& error)
{
std::int32_t variable = 0;
if(GetSomething())
error = EOK;
else
error = ERROR;
}
Если я положил фигурные скобки вокруг error = EOK;
, тогда он скомпилируется. Почему VС++ говорит:
незаконное другое без соответствия if
?
Мой полный код приведен ниже, заменив std:: uint32_t на typedef. Он по-прежнему дает ту же ошибку в VС++.
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;
}