If your definition of EOK is as follows:
#define EOK 0;
then it would cause this type of error, because it forcibly terminates the if-statement before the else is reached, making it an else without a matching if. The compiler sees this code after macro replacement:
if(GetSomething())
error = 0;;
else
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…