ปิดใช้งานคำเตือนเฉพาะใน flycheck (โดยเฉพาะ“ #pragma หนึ่งครั้งในไฟล์หลัก”)


11

ฉันใช้ flycheck เพื่อการพัฒนา C ++ และรับคำเตือนต่อไปนี้:

#pragma once in main file

ในส่วนหัวทั้งหมดรวมอยู่ในไฟล์หลัก ค้นหาเว็บฉันได้รับความประทับใจว่ามันเกี่ยวข้องกับวิธี gcc และเสียงดังกราว

ฉันต้องการกำจัดคำเตือนนี้ มีอะไรที่ฉันพอจะทำได้บ้าง?


จะเป็นการง่ายกว่าที่จะทราบวิธีระงับคำเตือนนี้หากเราสามารถทำซ้ำได้ก่อน คุณสามารถให้ไฟล์ตัวอย่างหรือไฟล์ที่แสดงปัญหาขณะที่ยังคงเป็นเรื่องง่ายที่สุดเท่าที่จะทำได้?
Ben Liblit

ฉันมีคำถามคล้ายกับของคุณผมมีคำตอบ
Pradana Aumars

คำตอบ:


2

เสียงดังกราวมีตัวเลือกในการปิดการใช้งานคำเตือนนี้ การเพิ่มสิ่งต่อไปนี้ในการกำหนดค่าของฉันแก้ไขปัญหาให้ฉันได้

(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 ตอบ clang:

; ignore clang "#pragma once" warning
(with-eval-after-load "flycheck"
  (setq flycheck-clang-warnings `(,@flycheck-clang-warnings
                                  "no-pragma-once-outside-header")))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.