C_and_CPP 板


LINE

※ 引述《Arton0306 (Ar藤)》之銘言: : 在C++編程規範一書中 : 第0項條款 : 有寫到 : 絕不使用所謂「私密名稱」,亦即以單一底線開頭的名稱,或包含連續兩個底線 : 的名稱。 : 請問這是什麼原因, : 有一些forum 三不五時會看到有人變數命名就是 _something : 小弟個人是很討厭底線開頭的名稱(因為要多按shift 而且又難看) : 不過這裡直接列為「絕不使用」 : 不知是什麼原因?? 根據 C++ standard 17.4.3.1.2 "Global names" 保留名稱有三種,是給 compiler 用的: 1. 包含連續雙底線的 像是 __atomic_add 2. 單底線開頭,後面接大寫文字 像是 _MSC_VER 3. 單底線開頭但後面沒接大寫 像是 _cprintf 1 和 2 是全域保留字,你的程式不管在任何地方都不應該使用 1 或 2 的命名方式, 包括 class 名稱、所有的變數、所有使用 #define 定義的 macro 3 是 global namespace 保留字,只有在自己的 namespace 或 class 內,你才能 使用底線加小寫的名稱,不能放在 global namespace 之所以有這些規則,是因為 preprocessor 並沒有 namespace 的觀念,為了避免 compiler 自己用 #define 定義出來的名稱與 programmer 所用的相衝突,標準 就把比較醜 (前面加底線) 的名稱拿給 compiler 用,讓 programmer 可以使用 比較好看 (不加底線) 的名稱。不過很多人不知道這點,跑去看了 STL source 後可能會覺得前面加底線很酷,而寫出如下的 header: #ifndef _MY_HEADER_H #define _MY_HEADER_H template <typename _T> class { ... }; #endif 這是錯誤的命名方式,_MY_HEADER_H 與 _T 前面的底線都應該拿掉。 至於底線配小寫 (_something),我倒是常在 class member variable 中看到。 如果只拿來用在 class 中這樣是 OK 的,只是我也不太喜歡這樣的命名方式。 --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.59.201
1F:推 james732:原來如此 11/05 14:02
2F:推 VictorTom:推長知識:) 11/05 14:11
3F:推 Zephyr750:前後雙底線的__MY_HEADER_H__方式保護重覆宣告呢? 11/05 14:36
4F:→ Zephyr750:應該也是不行吧? 11/05 14:37
5F:→ diabloevagto:底現在後面ok 11/05 15:17
6F:→ legnaleurc:前面有就不行吧,我是 NAMESPACE_DIR_HEADER_HPP 11/05 15:40
7F:→ legnaleurc:衝到的機率會比較低一點 11/05 15:40
8F:推 xatier:長知識了 11/06 01:50
9F:推 tropical72:推, 原來我以前到現在就一直在幹傻事 11/06 02:35
10F:推 Arton0306:大推!感謝! 11/06 03:03
11F:→ letoh:我寫 c 時的 static func 命名幾乎都是 _xxx XD 11/06 10:45
12F:推 allenlinli:長知識了 11/06 18:24
13F:→ hilorrk:原來標準有寫這東西~推 11/06 23:24
14F:→ descent:忘記在那本書看到, 作者建議底線放在後面, 11/07 11:25
15F:→ descent:理由和這篇說的一樣, 從那之後, 我的底線都是放在後面, 11/07 11:26
16F:→ descent:一開始看起來很奇怪, 久了就習慣了。 11/07 11:26
17F:推 Favonia:標準一大堆怪東西 xDDD 11/07 18:22
18F:推 Arton0306:C++編程規範有寫放在後面 也一樣是第0條 11/07 21:20
19F:推 diabloevagto:程式設計師的自我修養:連結、載入、程式庫 11/07 22:57
20F:→ diabloevagto:看了會更了解 11/07 22:57







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP