2013-05-24 3 views

ответ

-1

Невозможно контролировать его, поэтому просто запретите это предупреждение в коде.

2

Нет опции -W для «# прагма один раз в главном файле», поэтому вы не можете отключить ее обычными способами. (Тем не менее, разработчики звона хорошо осведомлены, что предупреждения без -W опций сосать, и есть общее правило, которое новое предупреждения всегда получить -W вариант. Очистка коды старого, к сожалению, остаются в качестве упражнения для расстроенного . пользователей)

Если вы не возражаете оболочки повозка, запряженная волами, вы всегда можете сделать что-то вроде этого:

# This gives the warning... 
clang -c myheader.h 

# ...This doesn't. 
echo '#include "myheader.h"' | clang -c -x c++-header -o myheader.h.gch - 

задний -, как обычно, означает «чтение со стандартного ввода». -x c++ сообщает Клану, на каком языке вы используете (поскольку он не может указывать из расширения файла, когда - это нет файла), и смена c++ на c++-header означает, что мы хотим создать .gch-файл вместо .o файл.

Файлы .gch, изготовленные таким образом, являются NOT бит для бит идентичны. Я не знаю достаточно о gch-файлах, чтобы рассказать вам, что может быть заметно отличается от их поведения. Однако, поскольку все, о чем вы заботитесь, это АСТ AST Clang, я готов поспорить, что с вами все будет в порядке. :)

4

У меня была эта вещь, когда я случайно включил заголовочный файл в файлы компиляции (этот заголовок имеет #pragma после строки). Исправить это удалить заголовок из источников компиляции (и, вероятно, вам нужно заменить его на .cpp-файл)

+1

Это была проблема, с которой я столкнулся, потому что я использовал $^в своем make-файле как ярлык. – VaelynPhi

3

Используйте аргумент командной строки -Wno-pragma-once-outside-header.

+0

предупреждение: неизвестный вариант предупреждения '-Wno-pragma-once-outside-header' – Sergey

+0

Спасибо @Sergey, это сработало для меня в то время. – W1M0R

3

Используйте -w (нижний регистр w не в верхнем регистре W) при компиляции источника для подавления таких предупреждений.

+0

Я могу подтвердить, что это работает для gcc 5.4 – Julian