在我們的項目中,我們決定使用下劃線爲成員變量和一些私有/受保護方法加上前綴(因此使用「_
」)。以下劃線開頭的類成員(_)
在討論過程中,有人聲稱由於某些平臺上的某些編譯器/鏈接器存在某些不兼容問題,所以不鼓勵這樣做。因爲我們希望儘可能便攜,所以我想確保。
我也估計that prefixing globals with underscores in C可能是個問題。
這同樣適用於C++ - 鏈接,如果是這樣,在哪些情況下(平臺/編譯器/鏈接器)?
在我們的項目中,我們決定使用下劃線爲成員變量和一些私有/受保護方法加上前綴(因此使用「_
」)。以下劃線開頭的類成員(_)
在討論過程中,有人聲稱由於某些平臺上的某些編譯器/鏈接器存在某些不兼容問題,所以不鼓勵這樣做。因爲我們希望儘可能便攜,所以我想確保。
我也估計that prefixing globals with underscores in C可能是個問題。
這同樣適用於C++ - 鏈接,如果是這樣,在哪些情況下(平臺/編譯器/鏈接器)?
從C++ 03標準:§17.4.3.1.2/ 1
名稱和功能特徵的一組特定總是保留給實現:
每名包含雙下劃線(
__
)或以下劃線開頭,後面跟着大寫字母(2.11),保留給實施用於任何用途。以下劃線開頭的每個名稱都保留給實現以用作全局名稱空間中的名稱。
等效文本存在於C++ 11§17.6.4.3.2/ 1
也請看看這裏:What are the rules about using an underscore in a C++ identifier?
我已經看到使用了大量的代碼單個下劃線作爲前綴或雙重下劃線在一個標識符,它只是工作。但你永遠不知道。標識符被保留,任何事情都可能發生,這取決於編譯器。
+1。換句話說,OP的使用是安全的*,只要*這些成員不以大寫字母開頭。但是我總是建議不要使用前面的下劃線,因爲這太容易意外地違反這裏顯示的規則之一。 – jalf
完全同意@jalf。如果你想,使用不同的前綴,如「m_」... –
這些是官方規則。在過去,我遇到了系統頭文件中的宏問題,這些宏也匹配以下劃線開頭的名字,後面跟着一個小寫字母。作爲一般規則,爲了便於閱讀,避免在符號的任何一端加下劃線。 –