问:关于 .h 文件?

wide288 2003-07-30 08:36:47
19 #ifndef __MBTYPES_H__ /* 如果以前没有定义过这个宏就定义这个宏,*/
20 #define __MBTYPES_H__ /* 那这只有这个宏名,没有内容啊 */
21
22 typedef unsigned uint32; /* 难道这就是宏的内容? */
23
24 #endif

我没有读到过一本书,详细说过关于 .h 文件的事。
所以很多东西不明白,希望得到大家的告知,先谢谢了。
我记得

#define PI 3.1415

不是这样用的吗? 那上面的用法是什么意思啊。说是宏,那这个文件怎样在 .c 文件中引用啊。请详细解释一下。
...全文
59 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wide288 2003-08-01
  • 打赏
  • 举报
回复
哦,我写的对就行,我再找问题。说明一下,我不是用的TC 和VC
用的是linux 下的gcc and vi
谢谢各位结贴
yakai 2003-07-31
  • 打赏
  • 举报
回复
main()
{
struct data1 da1;
.....
}
去掉中间的一行.....,我用VC6通过了,不好意思。我没有TC
airtraffic 2003-07-31
  • 打赏
  • 举报
回复
我觉得这样写没有什么问题啊!难道我是一直在写错误的代码 ?
xingforever 2003-07-31
  • 打赏
  • 举报
回复
请给出错误信息和完整代码。
wide288 2003-07-31
  • 打赏
  • 举报
回复
up
wide288 2003-07-30
  • 打赏
  • 举报
回复
哦,就是说,在这里 __MBTYPES_H__ 这个字符串写成什么都是没有影响的,宏定义的内容是
typedef unsigned uint32;

第二点,如果
#infndef __MBTYPES_H__
#define __MBTYPES_H__
.....
#endif
中的 __MBTYPES_H__ 在前面有过类似的宏定义或 #define __MBTYPES_H__ 48
定义。那么这里将不会执行宏定义。
我好像明白了。

还有一点关于 .h 文件的问题。引用。
如果我写个 .h 文件。
//file name is data.h
struct data1
{
long open;
long end;
long learn;
long number;
};
=======================================================
那么,我在一个 .c 文件中引用上面这个结构是这么写吗?
//read-data.c
#include "data.h"
main()
{
struct data1 da1;
.....
}
========================================================
是这样吗?
我写过,出错了。
imeng99 2003-07-30
  • 打赏
  • 举报
回复
#ifndef __MBTYPES_H__ /* 如果以前没有定义过这个宏就定义这个宏,*/
#define __MBTYPES_H__ /* 那这只有这个宏名,没有内容啊 */
typedef unsigned uint32; /* 难道这就是宏的内容? */
#endif
这是为了避免重复定义头文件mbtypes.h的
typedef unsigned uint32;相当于给unsigned类型起了个别名是uint32
#define PI 3.1415 是定义常量PI为3.1415,在编译时会将PI替换为3.1415
yakai 2003-07-30
  • 打赏
  • 举报
回复
上面的也是宏啊,不过
typedef unsigned uint32; 是类型替换的一种语句,相当于给unsigned取了个uint32的名字,以后用uint32定义一个变量,该变量的类型就是unsigned类型的。
#ifndef
#endif
成对使用,主要是防止重复定义东西,如果不用这种结构,你可能就会犯一处#define PI 3.1415

另外一处#define PI 3.1416,编译器会报警告的,而用了
#ifndef
#endif
的地方就只有一处定义PI的值是多少了
#define __MBTYPES_H__ 与
#define PI 3.1416确实有所不同,前一句表示我口袋里放了一个叫PI的东西,重3斤,而#define __MBTYPES_H__表示我口袋里放了一个叫__MBTYPES_H__的东西,我没说它重多少
#ifndef PI
和#ifdef PI都判断的是我口袋里有没有叫做PI的东西,也不管它是多重的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧