禁用flycheck中的特定警告(特别是“ #pragma在主文件中一次”)


11

我正在使用flycheck进行C ++开发,并收到以下警告:

#pragma once in main file

在主文件中包含的所有标题中。搜索网络时,我得到的印象与gcc和clang(都给出相同的警告)如何编译flymake有关。

我想摆脱这个警告。有什么我可以做的吗?


如果我们可以首先重现此警告,将更容易弄清楚如何消除此警告。您能否给出一个示例文件或一个出现问题的文件,同时仍然尽可能简单地制作它们?
Ben Liblit 2015年

我有一个与您相似的问题,有一个答案
Pradana Aumars,

Answers:


2

Clang可以选择禁用此警告。在我的配置中添加以下内容为我解决了该问题。

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

不幸的是,我不知道gcc是否存在类似的选项。


0

目前,GCC无法抑制此警告。而且,flycheck无法在不接触其内部的情况下忽略错误。

这是适用于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对c的答案

; ignore clang "#pragma once" warning
(with-eval-after-load "flycheck"
  (setq flycheck-clang-warnings `(,@flycheck-clang-warnings
                                  "no-pragma-once-outside-header")))
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.