安放天天 2014年01月14日
条件编译与重复定义的问题————————————————
假设头文件head.h:
#ifndef __S1_H__
#define __S1_H__
void led_init(void);
#endif

建立2个文件,
第一个文件为file1.c ,并将头文件包含进去
第二个文件为file2.c ,也将头文件包含进去。
首先编译file1.c,头文件肯定会被包含进去并编译,
接着编译file2.c,头文件会被包含进去并编译吗?

个人认为:编译file2.c,头文件会被包含进去并编译。原因如下:
file1.c里面include了head.h
而尽管head.h里面有#define __S1_H__
事实上,#define 的作用域只限于单个文件,所以__S1_H__在file1.c编译完后就没了,编译file2.c时,#ifndef __S1_H__依然是成立的,因此file2.c会继续 include并编译。条件编译是为了防止同一文件中多次包含的。
--------------------------对吗????

...全文
105 点赞 收藏 9
写回复
9 条回复

还没有回复,快来抢沙发~

发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告