Erro do compilador C2004
"defined(id)" esperado
Um identificador deve aparecer entre parênteses após a palavra-chave do pré-processador.
Esse erro também pode ser gerado como resultado do trabalho de conformidade do compilador que foi feito para o Visual Studio .NET 2003: parênteses ausentes em diretiva do pré-processador. Se o parêntese de fechamento estiver faltando em uma diretiva de pré-processador, o compilador gerará um erro.
Exemplos
O seguinte exemplo gera o C2004:
// C2004.cpp
// compile with: /DDEBUG
#include <stdio.h>
int main()
{
#if defined(DEBUG // C2004
printf_s("DEBUG defined\n");
#endif
}
Resolução possível:
// C2004b.cpp
// compile with: /DDEBUG
#include <stdio.h>
int main()
{
#if defined(DEBUG)
printf_s("DEBUG defined\n");
#endif
}