2014-09-03 131 views
2

IIRC不應使用內置名稱(例如open,read等),以下劃線和大寫字母開頭的名稱(例如_Thread),以雙下劃線開頭的名稱或包含它(例如__GCC__)。對於POSIX兼容性更多(請參閱GCC命名約定)。C命名約定:隱藏變量/宏

我正在創建一個新庫,其中每個函數,類型或宏都以前綴開頭(如果它是宏,則用大寫字母寫)。但是,如果我創建一個全局但隱藏的變量,我懷疑我必須使用哪個名稱。或者如果它是一個宏。無論如何,它將被隱藏起來。我會使用任何命名約定嗎?我認爲我可以使用__mycustomprefix_global,但我不確定。提前致謝!

UPDATE 我知道關於static並在任何可能的地方使用它。但是,我正在談論變量/函數/宏必定是全局的情況。

+2

如果在翻譯單元之外不需要變量,則聲明它爲「靜態」,不必擔心命名,因爲即使對鏈接器它也不可見。 – DevSolar 2014-09-03 11:16:34

+0

@DevSolar我應該寫一下。是的,我知道它並在任何可能的地方使用它。但是,我正在談論變量/函數/宏必定是全局的情況。 :-( – ghostmansd 2014-09-03 11:19:54

+0

前綴是好的,BTW:不要忘記以'mem'或'str'開始的名字,這些也是爲庫保留的 – wildplasser 2014-09-03 11:32:30

回答

1

原則上,以前導下劃線開頭的標識符保留給新的語言關鍵字,C運行時和標準庫以及編譯器內在函數,所以您不應該使用它們。

但是,如果您使用命名空間前綴,碰撞的機率可能很低,所以在實踐中無關緊要。就我個人而言,我會用尾部下劃線去。