Подтвердить что ты не робот

Можно ли отключить это предупреждение в clang? предупреждение: # прагма один раз в главном файле

предупреждение: #pragma один раз в главном файле

Мы запускаем наши заголовки через clang, чтобы получить частичный AST.

Можно ли отключить это предупреждение?

4b9b3361

Ответ 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

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