亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在C ++標識符中使用下劃線有哪些規則?

在C ++標識符中使用下劃線有哪些規則?

楊魅力 2019-05-20 16:44:36
在C ++中通常用某種前綴命名成員變量來表示它們是成員變量而不是局部變量或參數。如果你來自MFC背景,你可能會使用m_foo。我myFoo偶爾也見過。C#(或者可能只是.NET)似乎建議只使用下劃線,如_foo。這是否允許C ++標準?
查看完整描述

4 回答

?
繁花如伊

TA貢獻2012條經驗 獲得超12個贊

避免名稱沖突的規則都是C ++標準(參見Stroustrup書)和C ++大師(Sutter等)提到的。

個人規則

因為我不想處理案件,并且想要一個簡單的規則,所以我設計了一個簡單而正確的個人案例:

命名符號時,如果您符合以下條件,則可避免與編譯器/ OS /標準庫沖突:

  • 永遠不要用下劃線開始一個符號

  • 永遠不要在里面用兩個連續的下劃線命名。

當然,將代碼放在一個唯一的命名空間中也有助于避免沖突(但不能防止惡意宏)

一些例子

(我使用宏,因為它們是C / C ++符號的代碼污染更多,但它可以是從變量名到類名的任何東西)

#define _WRONG#define __WRONG_AGAIN#define RIGHT_#define WRONG__WRONG#define RIGHT_RIGHT#define RIGHT_x_RIGHT

來自C ++ 0x草案的摘錄

n3242.pdf文件(我希望最終的標準文本類似):

17.6.3.3.2全局名稱[global.names]

某些名稱和函數簽名集始終保留給實現:

- 包含雙下劃線_ _或以下劃線后跟大寫字母(2.12)開頭的每個名稱都保留給實現以供任何使用。

- 以下劃線開頭的每個名稱都保留給實現,以用作全局名稱空間中的名稱。

但是也:

17.6.3.3.5用戶定義的文字后綴[usrlit.suffix]

不以下劃線開頭的文字后綴標識符保留用于將來的標準化。

最后一個條款令人困惑,除非您認為如果在全局命名空間中定義,以一個下劃線開頭并后跟一個小寫字母的名稱將為Ok ...


查看完整回答
反對 回復 2019-05-20
?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

至于問題的另一部分,通常將下劃線放在變量名的末尾,以免與內部任何內容發生沖突。

我甚至在類和名稱空間內執行此操作,因為我只需要記住一條規則(與“在全局范圍內的名稱末尾,以及其他地方名稱的開頭”相比)。


查看完整回答
反對 回復 2019-05-20
  • 4 回答
  • 0 關注
  • 1279 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號