2011-09-19 11 views
18

Estoy compilando un proyecto bastante grande usando el compilador VxWorks6.8 C++. Me estoy haciendo siguiente advertenciaadvertencia: tokens adicionales al final de la directiva #endif

advertencia: elementos extra al final de la directiva #endif

#ifndef _OM_NO_IOSTREAM 
#ifdef WIN32 
#ifndef USE_IOSTREAM 
#define USE_IOSTREAM 
#endif USE_IOSTREAM 
#endif WIN32 

Me estoy haciendo un buen montón de estas advertencias.

  1. ¿Por qué estoy recibiendo estas advertencias y desde el punto C++ estándar de vista?
  2. ¿Cuál es la buena razón por la cual el compilador advierte de esto?
  3. ¿Cuál es la mejor manera de arreglar esto?

Gracias

Respuesta

32

deben ser:

#endif // USE_IOSTREAM 
#endif // WIN32 

endif no toma ningún argumento. Este tipo de comentarios se colocan únicamente para facilitar la lectura

EDIT:

y se le pasa cerrando #endif // _OM_NO_IOSTREAM al final

+0

¿Puede usted eloprar por qué razón el compilador está lanzando esta advertencia? Gracias – venkysmarty

+10

ya lo hizo .... –

0
#endif USE_IOSTREAM 
#endif WIN32 
    // ^^^^^^^^^^^^ Compiler is warning about these extra tokens after endif directive. 

No hay necesidad de ningún identificador después #endif. La forma de suprimir esas advertencias es eliminarlas.

11

Debido a que no se puede tener nada después de #endif

Además, se está perdiendo una endif.

#ifndef _OM_NO_IOSTREAM 
    #ifdef WIN32 
    #ifndef USE_IOSTREAM 
     #define USE_IOSTREAM 
    #endif 
    #endif 
#endif 
+0

+1. Solo la respuesta correcta hasta el momento. – Nawaz

Cuestiones relacionadas