XXX被多次定义的问题

来源:互联网 发布:胖子升级数据 编辑:程序博客网 时间:2024/06/07 13:41

在头文件中定义了如下字符数组

char type_chunk[20] = "chunk";
char type_read[20] = "read";
char type_hash[20] = "hash";
char type_dedup[20] = "dedup";
char type_restore[20] = "restore";
char type_rewrite[20] = "rewrite";
char type_trace[20] = "trace";
char type_container[20] = "container";
char type_restore_chunk[20] = "res_chunk";
char type_restore_recipe[20] = "res_recipe";

且工程中的每个.c文件都包含了此.h文件

结果出现了各种被多次定义的错误提示

如下:




原因是头文件被多次编译


有以下几种方法可以改:

1、在头文件中声明,在主函数的c文件中定义    

int g_number; // 定义式,不管你放在哪里,它也是定义式。定义式需要分配内存,所以一个变量的定义式应该只有一个,而且只能有一个。你的头文件被多处包含,相当于定义了多个定义式,所以报错是必然的。

extern int g_number; // 声明式,不分配内存,可以有N多个。放在头文件中,被包含多次,无所谓


2、在每个用到的c文件定义一遍(这样就不是全局变量了)

因为我需要用到的只是这个字符串的值,不需要改变其内容。但是这种方法太原始,不建议采用。。


3、直接用difine

既然只需要用值,直接define简单的多呀,又不会出错


over


0 0