Ich erwarte den folgenden Code zu kompilieren. Clang und VC++ geben beide einen Fehler in der Zeile mit else
.Wenn und ohne Klammern
void MyFunction(std::int32_t& error)
{
std::int32_t variable = 0;
if(GetSomething())
error = EOK;
else
error = ERROR;
}
Wenn ich setzen geschweiften Klammern um error = EOK;
, dann kompiliert. Warum VC++ sagen:
illegal sonst ohne passende wenn
?
Mein vollständiger Code ist unten, ersetzt std :: uint32_t mit einem typedef. Es gibt immer noch den gleichen Fehler in 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;
}
Ich rieche ein Makro Ratte. –
was ist EOK (oder GetSomething)? vielleicht ist es eine etwas verwurstete Makrodefinition – marcinj
@Graznarak post die vollständige Quelle, einschließlich aller Makros, die Sie definiert haben, weil diese Quelle für mich kompiliert –