- 论坛徽章:
- 0
|
head.h:
- #ifndef __head_h
- #define __head_h
- #include <stdlib.h>
- #include <stdio.h>
- int a = 3;
- void fun(void);
- #endif
复制代码
1.c:
- #include "head.h"
- int main(void)
- {
- printf("in 1.c: a = %d\n", a);
- fun();
- exit(0);
- }
复制代码
2.c:
- #include "head.h"
- void fun(void)
- {
- a++;
- printf("in 2.c: a = %d\n", a);
- }
复制代码
编译:
[zuhf@localhost test]$ make
cc -c -o 1.o 1.c
cc -c -o 2.o 2.c
gcc -o xiaozhu 1.o 2.o
2.o .data+0x0): multiple definition of `a'
1.o .data+0x0): first defined here
collect2: ld returned 1 exit status
make: *** [xiaozhu] Error 1
不明白的地方:
在head.h的那一int a的时候,如果定义的时候初始化的话,编译就会出现上述multiple definition of 'a'的错误,
如果不初始化的话就会make成功。
麻烦给讲解下,谢谢! |
|