2012-09-22 30 views
2

基本上我想忽略文字中空字符的警告。如何禁用警告:null字符(s)保留在文字?

GCC說,這種警告是默認啓用。

我無法找到此警告適當-Wno-選項。

你得到的代碼這樣的警告這樣

const char input[] = "abc^@123"; 

其中^@表示ASCII字符0(您可以通過按Ctrlvvim進入它 - 通過克驗證a在命令模式下,而光標放在字符上)。

+1

任何理由不使用'\ 0'代替 – Mat

+0

好了。?。隨着'-std = gnu99',您可以使用原始字符串,並警告將不會在這種情況下觸發,但是這可能是不可行的。 – Mat

+0

@Mat,我測試了它,它似乎你有逃脫它像'\ 000 ' - '\ 0'不起作用 - 但是用'\ 000'我沒有得到警告。不需要轉義會更方便一些,例如能夠複製/粘貼協議捕獲。 – maxschlepzig

回答

3

它發生在詞法分析器,它看起來並不像您可以禁用檢查。 :-(下面是libcpp/lex.c代碼片段:

if (saw_NUL && !pfile->state.skipping) 
    cpp_error (pfile, CPP_DL_WARNING, 
     "null character(s) preserved in literal"); 

正如你所看到的,沒有任何選項檢查發出警告之前

相關問題