Chinaunix首页 | 论坛 | 博客
  • 博客访问: 118219
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 375
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-15 22:27
文章分类
文章存档

2018年(2)

2017年(37)

我的朋友

分类: C/C++

2017-09-08 15:32:37

编译的时候提示:
/tmp/cclS8A13.o:(.data+0x0): `test'被多次定义
/tmp/cccMlcz3.o:(.data+0x0):第一次在此定义
collect2: error: ld returned 1 exit status
源代码如下:

main.c
  1. #include <stdio.h>
  2. #include "t1.h"

  3. int main(){
  4.     
  5.     return 0;
  6. }
t1.c

  1. #include "t1.h"

  2. void test2(){
  3.     int num = test[1];
  4. }
t1.h

  1. #ifndef __MAIN_H
  2. #define __MAIN_H

  3. char test[2] = {'a','b'};

  4. #endif
原因分析:
头文件中不能定义变量,会被重复定义,声明可以,因为声明可以声明无数次。
延伸:可以在头文件中定义的变量。
1.可以在头文件中使用static定义变量。
   static变量存储位置在全局变量区,而且static只会执行一次定义。 
2.可以在头文件中定义类。
3.可以在头文件中定义枚举,枚举类似于宏定义,定义的是常量,而不是变量。

小弟才疏学浅,只是做个个人猜测,等知识丰富了之后重新补充。。。





阅读(5250) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~