编译的时候提示:
/tmp/cclS8A13.o:(.data+0x0): `test'被多次定义
/tmp/cccMlcz3.o:(.data+0x0):第一次在此定义
collect2: error: ld returned 1 exit status
源代码如下:
main.c
-
#include <stdio.h>
-
#include "t1.h"
-
-
int main(){
-
-
return 0;
-
}
t1.c
-
#include "t1.h"
-
-
void test2(){
-
int num = test[1];
-
}
t1.h
-
#ifndef __MAIN_H
-
#define __MAIN_H
-
-
char test[2] = {'a','b'};
-
-
#endif
原因分析:
头文件中不能定义变量,会被重复定义,声明可以,因为声明可以声明无数次。
延伸:可以在头文件中定义的变量。
1.可以在头文件中使用static定义变量。
static变量存储位置在全局变量区,而且static只会执行一次定义。
2.可以在头文件中定义类。
3.可以在头文件中定义枚举,枚举类似于宏定义,定义的是常量,而不是变量。
小弟才疏学浅,只是做个个人猜测,等知识丰富了之后重新补充。。。
阅读(5378) | 评论(0) | 转发(0) |