打印

#ifndef怎么用呢?

[复制链接]
楼主: areshan
手机看帖
扫描二维码
随时随地手机跟帖
41
lxyppc| | 2011-6-14 09:51 | 只看该作者 回帖奖励 |倒序浏览
不是所有的编译器都能编过

使用特权

评论回复
42
huangqi412| | 2011-6-14 10:01 | 只看该作者
酒精考验? 31# xwj

使用特权

评论回复
43
xwj| | 2011-6-14 10:02 | 只看该作者
当然是酒精考验,不然你想用什么考验?

使用特权

评论回复
44
huangqi412| | 2011-6-14 10:04 | 只看该作者
:lol  香烟考验。。。

使用特权

评论回复
45
xwj| | 2011-6-14 10:06 | 只看该作者
这个...
可以是可以,不过没有酒精考验好操作啊~:P

使用特权

评论回复
46
yewuyi| | 2011-6-14 10:17 | 只看该作者
不是所有的编译器都能编过
lxyppc 发表于 2011-6-14 09:51


晕,俺用的编译器都能编译通过的嘛,PICC,IAR,COSMIC

使用特权

评论回复
47
原野之狼| | 2011-6-14 10:28 | 只看该作者
---------------
如果不用#ifndef 防重复技术
那么#include "type.h"不能出现头文件中
而在使用a和b模块的文件中,只能这样写
#include "type.h"
#include "a.h"
#include "b.h"
也就是说,在使用a,b模块的时候,你 ...
yewuyi 发表于 2011-6-14 09:12

这个例子有点简单  你试着在type.h里添些别的内容看看就知道了

使用特权

评论回复
48
yewuyi| | 2011-6-14 10:35 | 只看该作者
这个例子有点简单  你试着在type.h里添些别的内容看看就知道了
原野之狼 发表于 2011-6-14 10:28


只要是声明,那添加多少都没有问题。

如果是定义,那只要有一条也通不过。

使用特权

评论回复
49
yewuyi| | 2011-6-14 10:36 | 只看该作者
这个...
可以是可以,不过没有酒精考验好操作啊~:P
xwj 发表于 2011-6-14 10:06


:'( ,俺真的是‘酒精考验’过的,现在都是酒精肝了,彻底戒酒5年多了。

使用特权

评论回复
50
老鱼探戈| | 2011-6-14 10:40 | 只看该作者
俺一直认为,其实这个包含问题这么处理并不好,重复包含本来就不对,这么做其实是掩盖了问题
yewuyi 发表于 2011-6-13 11:56



这也不是要可以去掩盖问题,大一点的工程出现重复包含的可能性比较高,这也解决了一些不必要的麻烦,也不会使程序存在什么BUG。何乐而不为呢。

使用特权

评论回复
51
原野之狼| | 2011-6-14 10:49 | 只看该作者
只要是声明,那添加多少都没有问题。

如果是定义,那只要有一条也通不过。
yewuyi 发表于 2011-6-14 10:35

老叶太武断了
你再添点结构定义的东东进去看看吧:)

使用特权

评论回复
52
yewuyi| | 2011-6-14 10:53 | 只看该作者
老叶太武断了
你再添点结构定义的东东进去看看吧:)
原野之狼 发表于 2011-6-14 10:49


俺可说了,只要是定义,肯定就不行,结构定义也属于定义一种,但可以在H文件中做结构格式的声明,则这个就没有问题。

使用特权

评论回复
53
原野之狼| | 2011-6-14 10:55 | 只看该作者
俺可说了,只要是定义,肯定就不行,结构定义也属于定义一种,但可以在H文件中做结构格式的声明,则这个就没有问题。
yewuyi 发表于 2011-6-14 10:53

呃  不好意思 是我看花了眼
结构的定义基本上都是放在头文件中的 这也是为什么需要搞个预处理来控制下

使用特权

评论回复
54
yewuyi| | 2011-6-14 11:00 | 只看该作者
呃  不好意思 是我看花了眼
结构的定义基本上都是放在头文件中的 这也是为什么需要搞个预处理来控制下
原野之狼 发表于 2011-6-14 10:55



个人认为:

结构的定义放到C文件中,只在H文件中做结构型式的声明。

使用特权

评论回复
55
原野之狼| | 2011-6-14 11:06 | 只看该作者
个人认为:

结构的定义放到C文件中,只在H文件中做结构型式的声明。
yewuyi 发表于 2011-6-14 11:00

嘿嘿 非典型做法~
且这样子的话 其它模块无法实例化该对象 只能在本模块实例化了

使用特权

评论回复
56
xwj| | 2011-6-14 11:40 | 只看该作者
老叶,你想过没有:
你那样的每个文件都去定义,既繁琐有复杂,比如多个文件要用同一个结构呢?
而且万一需要裁减、增加时结构要改一下呢?其他文件也都一个个的去改?——当然,从降低模块耦合度的角度来说这是不应该的,但是有时为了效率还是得这么干啊


再就是,每个程序都有自己的.c和.h文件,C文件里只要包含自己的.h和公用的public.h,多整洁?
你还每个文件里去看要不调用别的模块函数增加该.h文件?要是你和你调用的模块又都同时用的了另一个
模块下的函数呢?你怎么办?

使用特权

评论回复
57
yewuyi| | 2011-6-14 11:56 | 只看该作者
老叶,你想过没有:
你那样的每个文件都去定义,既繁琐有复杂,比如多个文件要用同一个结构呢?
而且万一需要裁减、增加时结构要改一下呢?其他文件也都一个个的去改?——当然,从降低模块耦合度的角度来说这是不应该的,但是有时为了效率还是得这么干啊
-------------------------------------------------------------------------------
RE:我都是在public.h中进行结构声明,裁减、增加结构内部组员没问题,只要修改public.h中结构声明即可,在一个C文件中定义了结构后,在其它文件中用extern就可以用了啊,当然,麻烦是麻烦了点,但感觉这样比较直观,反正也就是拷贝、复制等操作,习惯了所以一直也就没有怕这个麻烦。
--------------------------------------------------------------------------------
再就是,每个程序都有自己的.c和.h文件,C文件里只要包含自己的.h和公用的public.h,多整洁?
你还每个文件里去看要不调用别的模块函数增加该.h文件?要是你和你调用的模块又都同时用的了另一个
模块下的函数呢?你怎么办?
----------------------------------------------------------------------
RE:C文件里只包含自己的.h和公用的public.h,我基本也都是这么做的啦,当前文件中要调用别的模块中的函数时,我都是在当前文件中的H文件中,使用extern把需要调用的函数做一个原型声明即可了啊。
----------------------------------------------------------------------

呵呵,需要特别声明的是:俺C语言学的确实很菜,学自动控制的多喜欢ASM,后来改用C,很久都不太习惯,不过慢慢形成自己的习惯之后,也就无所谓了,但自己的很多习惯也就那样了。

使用特权

评论回复
58
icecut| | 2011-6-14 12:24 | 只看该作者
这是c++的.c不用就可以了....

你们还没遇到a引用b.obj,ab都引用c.obj.然后b属于一个开发小组,代码保密,a属于另一个开发小组,代码保密.

连接的时候,就热闹了.....

使用特权

评论回复
59
原野之狼| | 2011-6-14 12:55 | 只看该作者
看来叶工玩的都是自己的风格~
不知道你在带队的时候是不是也要求小弟们这样子搞呢?
我还是倾向于使用国际流行做法~

使用特权

评论回复
60
yewuyi| | 2011-6-14 13:38 | 只看该作者
看来叶工玩的都是自己的风格~
不知道你在带队的时候是不是也要求小弟们这样子搞呢?
我还是倾向于使用国际流行做法~
原野之狼 发表于 2011-6-14 12:55


那没有,俺前面说了,俺自己不喜欢用,但也不反对别人使用。

使用特权

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

本版积分规则