打印

#ifndef怎么用呢?

[复制链接]
楼主: areshan
手机看帖
扫描二维码
随时随地手机跟帖
61
499734424| | 2011-6-15 18:00 | 只看该作者 回帖奖励 |倒序浏览
怎样解决 变量重复定义的问题 呢?
我每次变量也只能C文件中直接定义,H文件中基本只有声明一类的东西
但总觉得这样看着不舒服,要是定义也在H文件就挺好的!

使用特权

评论回复
62
johnwjl| | 2011-6-15 19:25 | 只看该作者
在H文件中定义变量,强烈的不提倡。
#ifndef我觉得还是有用的必要。

使用特权

评论回复
63
499734424| | 2011-6-15 19:44 | 只看该作者
63# johnwjl 谢谢!

使用特权

评论回复
64
yewuyi| | 2011-6-16 09:40 | 只看该作者
俺虽然不禁止用#ifndef,呵呵,但绝对禁止在H文件中出现任何的定义性代码。

使用特权

评论回复
65
cnyg| | 2011-6-19 10:26 | 只看该作者
哇、原来#Ifndef.这么厉害把几个斑竹都“包涵”进来了。对于我那个随处可见#Ifndef.#endif的例程该注意注意了。围观…

使用特权

评论回复
66
123jj| | 2011-6-19 11:10 | 只看该作者
呵呵!

厉害,把几个斑竹都“包涵”进来了 :lol

使用特权

评论回复
67
zhouxm1| | 2011-6-20 10:17 | 只看该作者
这是防止在程序编译时多次编译同一头文件而用的。。。

使用特权

评论回复
68
clingos| | 2011-6-21 13:55 | 只看该作者
C单片机里开发还是很多的。

使用特权

评论回复
69
salon_zju| | 2011-6-21 20:36 | 只看该作者
有助于统一管理

使用特权

评论回复
70
cbb0416| | 2011-6-22 09:37 | 只看该作者
mark,在论坛又学了新知识,回家告诉妈妈了!

使用特权

评论回复
71
myic200610| | 2011-6-26 23:57 | 只看该作者
同样的问题

使用特权

评论回复
72
piaoyrf| | 2011-6-28 13:54 | 只看该作者
:)

使用特权

评论回复
73
zhaoyubao| | 2011-6-30 22:17 | 只看该作者
那用什么写?
用D写?
用E写?

使用特权

评论回复
74
mbutterfly| | 2011-7-3 23:34 | 只看该作者
C++和C有区别吧,至少前者可以说是面向对象的,后者不是。

使用特权

评论回复
75
uniquehope| | 2011-7-4 07:12 | 只看该作者
围观,学习~~头文件原来在各大斑竹眼里也是大问题呀~~:hug:学习啦~

使用特权

评论回复
76
呆板书生| | 2011-7-4 07:26 | 只看该作者
呵呵,#ifndef某种程度上是可以防止变量重复定义的,在某些‘大作’中,经常见到。
#ifndef  xxx
#define xxx
unsinged char k1;
#endif
俺也一直弄不明白,为什么有人这些写,这么写到底是为了什么!?
-----------------------------------------------------------------------------

这种风格显然不规范,因为在.h文件定义变量和函数最好是extern

但结构和常数可以在头文件定义,

比如,在主程序中要历遍一个LED显示区(数组),

for (i= 0; i < MAXNUMBER; i++ )

这个LED显示位数在驱动模块的头文件中定义

#define MAXNUMBER 5

LED显示区数组在驱动模块中定义

unsigned char ucLED[MAXNUMBER];

使用特权

评论回复
77
cheng105| | 2011-7-6 12:24 | 只看该作者
"

防止重复包含同一个文件

"

使用特权

评论回复
78
SeaSun| | 2011-7-8 17:14 | 只看该作者
宏定义重复包含出现是可能的,此时用#indef或#ifndef也正常,但整个文件通过这种方式来避免重复包含,俺个人认为:不好。

俺自己反正是不喜欢用,当然别的同事用,俺也不反对,只是感觉不必要。 ...
yewuyi 发表于 2011-6-13 13:40


程序员发明的东西都是 方便自己偷懒, 而且是可靠地,稳扎稳打的偷懒.....呵呵
你不用也行,就勤快点吧

使用特权

评论回复
79
xiaomengjiuba| | 2011-7-14 21:04 | 只看该作者
hehe

使用特权

评论回复
80
phz0008| | 2011-7-15 09:45 | 只看该作者
void ADC_GpioCfg(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;

        /* Configure PC.01 and PC.04 (Channel11 and Channel14) as analog input -----*/
        //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_4;
#ifndef stm32ve
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;
#else
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 |GPIO_Pin_1|GPIO_Pin_2;
#endif
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则