C中防止重复定义时要加下划线

一直不太明白,C中防止重复定义时非要加下划线干嘛?
譬如:
#ifndef _UARTH_
#define _UARTH_

#endif

纳闷,可否指点一下?

2楼:>>参与讨论
szyzm
我也不明白!!
 
3楼:>>参与讨论
绿阴深处
你不加也可以
没什么强制要求。
之所以很多地方(特别是系统定义的)加下划线,我想是一种习惯,为了和普通变量和定义区分。

4楼:>>参与讨论
涤纶
回复
   用是这么用了,为什么也不知道,不会这么多人都有这习惯,还等高人指点一下吧。

5楼:>>参与讨论
IceAge
加下划线是为了防止重复定义 :-)
因为大多数名称没有下划线, 这样可以避免名称冲突,也便于识别。

6楼:>>参与讨论
奔腾的心
就是个好习惯,无他
 
7楼:>>参与讨论
风...
可是:
以下这一段是在文件名为uart.h的文件里的,

#ifndef _UARTH_
#define _UARTH_

#endif

有的也用“#ifndef UART_H”的,反正有很多变种,好像似乎为了躲避文件名中的点“.”,而且_UARTH_、UART_H等,与其文件名紧密相连的。

纳闷……

唉,我一直以为这是一个弱智问题呢^_^

8楼:>>参与讨论
computer00
我一般用两个下划线,例如#define __UART_H__
这样在取名字时,一般都不用顾忌它是否已经被用了。 因为变量很少取这么奇怪的名字。

9楼:>>参与讨论
AIRWILL
不过,一旦起名成了习惯
  这怪名也就不怪啦,冲突也会难免啦
也许这就说编程语言的缺陷啦

10楼:>>参与讨论
xwj
就是作为特殊标识,和普通的定义区分开,防止重名
譬如:
#ifndef _UARTH_            //如果没有定义
#define _UARTH_            //那么定义标志
                //下面跟着一堆正常的定义
    
#endif                 //结束这个if[/#]

因为很多头文件可能被多个文件包含,很多时候会出现重复定义的错误

而采用这种写法时,当重复包含这个文件时,第一次编译到#ifndef _UARTH_时条件满足,if里面的宏定义执行一次,
再次编译到#ifndef _UARTH_时条件不满足,if里面的宏定义就不会再执行了,也就不会出现重复定义的错误了



11楼:>>参与讨论
风...
非常感谢楼上各位大师,小生有礼了
也就是说,这只是一个习惯,而实际上用什么都行?是吧?

唉,我一直在想,这个奇怪的命名与其文件名有什么关系呢!

再次感谢大家的指点,开始有些醒悟了^_^

12楼:>>参与讨论
meng730507
这只是一个命名规则
当然,如果你有更好的方法,也可以不用这个规则.

13楼:>>参与讨论
computer00
楼主来看看这个日志:
http://blog.21ic.com/more.asp?NAME=computer00&id=11021

14楼:>>参与讨论
风...
非常感谢楼上各位高手的指点,非常感谢!
一定再仔细看看!
谢谢啦!

15楼:>>参与讨论
fushaobing
我也不明白
那为什么包含的时候文件名是“UART_H”而不是“__UART_H__”呢?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值