Можно ли отключить это предупреждение в clang? предупреждение: # прагма один раз в главном файле
предупреждение: #pragma один раз в главном файле
Мы запускаем наши заголовки через clang, чтобы получить частичный AST.
Можно ли отключить это предупреждение?
Ответы
Ответ 1
У меня была эта вещь, когда я случайно включил заголовочный файл в источники компиляции (этот заголовок имеет #pragma once line). Чтобы исправить это удаление заголовка из источников компиляции (и, вероятно, вам нужно заменить его на .cpp файл).
Ответ 2
Используйте аргумент командной строки -Wno-pragma-once-outside-header
.
Ответ 3
Используйте параметр -w
(нижний регистр w
не в верхнем регистре w
) при компиляции источника для подавления таких предупреждений.
Ответ 4
Нет опции -W
для "#pragma once in main file", поэтому вы не можете отключить ее обычными способами. (Тем не менее, разработчики Clang прекрасно понимают, что предупреждения без -W
options suck, и есть общее правило, что новые предупреждения всегда получают параметры -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 -
Конечный -
, как обычно, означает "читать из stdin". -x c++
сообщает Clang, какой язык вы используете (поскольку он не может сказать из расширения файла, когда нет файла), а изменение c++
на c++-header
означает, что мы хотим создать файл .gch вместо файла .o.
Два файла .gch
, которые были созданы таким образом, идентичны бит NOT. Я не знаю достаточно о gch файлах, чтобы рассказать вам, что может быть заметно отличается от их поведения. Однако, поскольку все, о чем вы заботитесь, это Clang AST, я уверен, с вами все будет в порядке.:)
Ответ 5
Нет возможности управлять им, поэтому просто запретите это предупреждение в своем коде.