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灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP