вимкнути конкретне попередження у флеш-контролі (зокрема, "#pragma один раз у головному файлі")


11

Я використовую перевірку для розробки C ++ і отримую таке попередження:

#pragma once in main file

У всіх заголовках, що входять до основного файлу. Шукаючи веб-сайти, я створюю враження, що це має відношення до того, як gcc та clang (обидва дають одне і те ж попередження) збирають для flymake.

Я хотів би позбутися цього попередження. Чи можна щось зробити?


Буде простіше зрозуміти, як придушити це попередження, якщо ми зможемо його відтворити спочатку. Чи можете ви навести прикладний файл або файли, які виявляють проблему, при цьому вони є такими ж простими, як ви можете їх створити?
Бен Лібліт

У мене є питання, подібне до вашого, у мене є відповідь .
Pradana Aumars

Відповіді:


2

У Clang є можливість вимкнути це попередження. Додавання наступного до мого конфігурації вирішило проблему для мене.

(with-eval-after-load "flycheck"
    (setq flycheck-clang-warnings `(,@flycheck-clang-warnings
                                    "no-pragma-once-outside-header")))

На жаль, я не знаю, чи існує подібний варіант для gcc.


0

В даний час GCC не може придушити це попередження. І мухоморка не має можливості ігнорувати помилки, не торкаючись її внутрішніх.

Ось хак, який працює для gcc:

; ignore gcc "#pragma once" warning
(with-eval-after-load "flycheck"
  (eval-when-compile (require 'flycheck))  ; for flycheck-error struct
  (defun my-filter-pragma-once-in-main (orig-fun errors)
    (dolist (err errors)
      (-when-let (msg (flycheck-error-message err))
        (setf (flycheck-error-message err)
              (if (string-match-p "#pragma once in main file" msg) nil msg))))
    (funcall orig-fun errors))
  (advice-add 'flycheck-sanitize-errors :around #'my-filter-pragma-once-in-main))

Для повноти відповідь @ grepcake за кланг :

; ignore clang "#pragma once" warning
(with-eval-after-load "flycheck"
  (setq flycheck-clang-warnings `(,@flycheck-clang-warnings
                                  "no-pragma-once-outside-header")))
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.