#ifndef怎么用呢?

[复制链接]
499734424 发表于 2011-6-15 18:00 | 显示全部楼层
怎样解决 变量重复定义的问题 呢?
我每次变量也只能C文件中直接定义,H文件中基本只有声明一类的东西
但总觉得这样看着不舒服,要是定义也在H文件就挺好的!
johnwjl 发表于 2011-6-15 19:25 | 显示全部楼层
在H文件中定义变量,强烈的不提倡。
#ifndef我觉得还是有用的必要。
499734424 发表于 2011-6-15 19:44 | 显示全部楼层
63# johnwjl 谢谢!
yewuyi 发表于 2011-6-16 09:40 | 显示全部楼层
俺虽然不禁止用#ifndef,呵呵,但绝对禁止在H文件中出现任何的定义性代码。
cnyg 发表于 2011-6-19 10:26 | 显示全部楼层
哇、原来#Ifndef.这么厉害把几个斑竹都“包涵”进来了。对于我那个随处可见#Ifndef.#endif的例程该注意注意了。围观…
123jj 发表于 2011-6-19 11:10 | 显示全部楼层
呵呵!

厉害,把几个斑竹都“包涵”进来了 :lol
zhouxm1 发表于 2011-6-20 10:17 | 显示全部楼层
这是防止在程序编译时多次编译同一头文件而用的。。。
clingos 发表于 2011-6-21 13:55 | 显示全部楼层
C单片机里开发还是很多的。
salon_zju 发表于 2011-6-21 20:36 | 显示全部楼层
有助于统一管理
cbb0416 发表于 2011-6-22 09:37 | 显示全部楼层
mark,在论坛又学了新知识,回家告诉妈妈了!
myic200610 发表于 2011-6-26 23:57 | 显示全部楼层
同样的问题
piaoyrf 发表于 2011-6-28 13:54 | 显示全部楼层
zhaoyubao 发表于 2011-6-30 22:17 | 显示全部楼层
那用什么写?
用D写?
用E写?
mbutterfly 发表于 2011-7-3 23:34 | 显示全部楼层
C++和C有区别吧,至少前者可以说是面向对象的,后者不是。
uniquehope 发表于 2011-7-4 07:12 | 显示全部楼层
围观,学习~~头文件原来在各大斑竹眼里也是大问题呀~~:hug:学习啦~
呆板书生 发表于 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];
cheng105 发表于 2011-7-6 12:24 | 显示全部楼层
"

防止重复包含同一个文件

"
SeaSun 发表于 2011-7-8 17:14 | 显示全部楼层
宏定义重复包含出现是可能的,此时用#indef或#ifndef也正常,但整个文件通过这种方式来避免重复包含,俺个人认为:不好。

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


程序员发明的东西都是 方便自己偷懒, 而且是可靠地,稳扎稳打的偷懒.....呵呵
你不用也行,就勤快点吧
xiaomengjiuba 发表于 2011-7-14 21:04 | 显示全部楼层
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);
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部