条件编译与重复定义的问题————————————————
安放天天 2014-01-14 10:35:00 假设头文件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并编译。条件编译是为了防止同一文件中多次包含的。
--------------------------对吗????