簡體   English   中英

C庫標識符和保留規則

[英]C library identifiers and reserved rules

在C11標准的7.1.3中列出了一些有關保留標識符的規則。

最后說:

沒有其他標識符被保留。 如果程序在保留它的上下文中聲明或定義一個標識符(而不是7.1.4允許),或者將一個保留標識符定義為一個宏名,則行為是不確定的。

但是,如果我嘗試使用GCC打破這些規則之一,例如,我編寫了類似int __A; 編譯器什么也沒告訴我。 現在也許我不太了解,但是接下來,哪些規則定義了您可能具有未定義行為的事實?

未定義行為的可能結果是您沒有收到警告,沒有錯誤並且一切正常。

另一個結果是,您通過點發布來升級編譯器,並且先前可以運行的代碼開始崩潰。

編譯器可能會警告您有關未定義的行為,但這不是必須的。 而且在許多情況下並非如此。 對於GCC,您至少應使用-Wall -Wextra選項,但在這種情況下將無濟於事。

諸如夾板,PC-Lint,QA-C等的靜態分析工具將為您提供更多有關未定義行為的警告。

暫無
暫無

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

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