2
基本上我想忽略文字中空字符的警告。如何禁用警告:null字符(s)保留在文字?
GCC說,這種警告是默認啓用。
我無法找到此警告適當-Wno-
選項。
你得到的代碼這樣的警告這樣
const char input[] = "abc^@123";
其中^@
表示ASCII字符0(您可以通過按Ctrlv 與vim
進入它 - 通過克驗證a在命令模式下,而光標放在字符上)。
基本上我想忽略文字中空字符的警告。如何禁用警告:null字符(s)保留在文字?
GCC說,這種警告是默認啓用。
我無法找到此警告適當-Wno-
選項。
你得到的代碼這樣的警告這樣
const char input[] = "abc^@123";
其中^@
表示ASCII字符0(您可以通過按Ctrlv 與vim
進入它 - 通過克驗證a在命令模式下,而光標放在字符上)。
它發生在詞法分析器,它看起來並不像您可以禁用檢查。 :-(下面是libcpp/lex.c
代碼片段:
if (saw_NUL && !pfile->state.skipping)
cpp_error (pfile, CPP_DL_WARNING,
"null character(s) preserved in literal");
正如你所看到的,沒有任何選項檢查發出警告之前
任何理由不使用'\ 0'代替 – Mat
好了。?。隨着'-std = gnu99',您可以使用原始字符串,並警告將不會在這種情況下觸發,但是這可能是不可行的。 – Mat
@Mat,我測試了它,它似乎你有逃脫它像'\ 000 ' - '\ 0'不起作用 - 但是用'\ 000'我沒有得到警告。不需要轉義會更方便一些,例如能夠複製/粘貼協議捕獲。 – maxschlepzig