簡體   English   中英

從gcc取消選擇“無法識別的命令行選項”

[英]Eliciting an “unrecognized command line option” from gcc

我正在使用gcc 7.3。 如果我使用gcc main.c -Wno-foo編譯例如int main(){ } ,則編譯成功,並且沒有錯誤輸出。

將源更改為int main(){ int a[-1]; /*uncompilable*/ } int main(){ int a[-1]; /*uncompilable*/ }同時維護build命令使我得到:

main.c: In function ‘main’:
main.c:3:6: error: size of array ‘a’ is negative
  int a[-1];
      ^
main.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-foo’

是否可以在不將編譯錯誤引入源代碼的情況下,強制使用unrecognized command line option '-Wno-foo'警告/錯誤消息?

-Wfoo (沒有no- )會立即向我發出警告消息,但我寧願將no-保留在其中。 (這是為了進行編譯器功能測試,我將其作為構建的一部分。)

這顯然是gcc的功能,而不是bug。 GCC手冊中

當請求了無法識別的警告選項(例如“ -Wunknown-warning”)時,GCC會發出診斷信息,指出該選項未被識別。 但是,如果使用“ -Wno-”形式,則行為略有不同:除非生成其他診斷,否則不會為“ -Wno-unknown-warning”生成診斷。 這允許在舊的編譯器中使用新的'-Wno-'選項,但是如果出現問題,編譯器會警告您存在無法識別的選項。

因此,如果您需要知道該選項是否存在,則需要使用該選項而沒有no- in。 先做 如果發現它受支持,請執行需要使用-Wno-foo參數的任何測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM