warning: дополнительные токены в конце директивы #endif

18

Я компилирую довольно большой проект с использованием компилятора VxWorks6.8 C ++. Я получаю следующее предупреждение

предупреждение: дополнительные токены в конце директивы #endif

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

Я получаю довольно много этих предупреждений.

  
  1. Почему я получаю эти предупреждения и от стандартной точки C ++   Посмотреть?
  2.   
  3. Какая причина, по которой компилятор предупреждает об этом?
  4.   
  5. Каков наилучший способ исправить это?
  6.   

Спасибо

    
задан venkysmarty 19.09.2011 в 09:59
источник

4 ответа

32

должен быть:

#endif // USE_IOSTREAM
#endif // WIN32

endif не принимает никаких аргументов. Такие комментарии размещаются только для удобства чтения

EDIT:

и вы пропустите закрытие #endif // _OM_NO_IOSTREAM в конце

    
ответ дан Andriy Tylychko 19.09.2011 в 10:01
источник
  • может ли вы использовать elobrate для какой хорошей причины компилятор бросает это предупреждение? благодаря –  venkysmarty 19.09.2011 в 10:02
  • уже сделал .... –  Andriy Tylychko 19.09.2011 в 10:04
11

Потому что у вас не может быть ничего после #endif

Кроме того, вам не хватает endif.

#ifndef _OM_NO_IOSTREAM
  #ifdef WIN32
    #ifndef USE_IOSTREAM
      #define USE_IOSTREAM
    #endif
  #endif
#endif
    
ответ дан Luchian Grigore 19.09.2011 в 10:03
источник
  • +1. Пока только правильный ответ. –  Nawaz 19.09.2011 в 10:11
0
#endif USE_IOSTREAM
#endif WIN32
    // ^^^^^^^^^^^^ Compiler is warning about these extra tokens after endif directive.

Нет необходимости в идентификаторе после #endif . Способ устранения этих предупреждений - удалить их.

    
ответ дан Mahesh 19.09.2011 в 10:02
источник
0

Обычно вы не помещаете текст за #endif. (И вам не хватает #endif для OM_NO_IOSTREAM)

Ссылка

    
ответ дан RvdK 19.09.2011 в 10:02
источник