出错原因:一般是因为在头文件里进行了定义或者实例化,导致多重定义,记住在头文件里只进行声明。
1、Don't define variables in headers. Put declarations in header and definitions in one of the .c files.
In config.h
1extern const char *names[];
In some .c file:
1
2
3
4const char *names[] = { "brian", "stefan", "steve" };
If you put a definition of a global variable in a header file, then this definition will go to every .c file that includes this header, and you will get multiple definition error because a varible may be declared multiple times but can be defined only once.
2、You must never instantiate(实例化)things in header files, i.e. never define anything, just declare them.
You should put a single definition of each declared thing in one of the C files, and have extern
declarations in the shared header:
In mydata.h
:
1
2
3
4
5
6struct Foo { float baryness; float baziness; }; extern struct Foo TheFoo;
In one C file:
1
2
3#include "mydata.h" struct Foo TheFoo; //实例化
In other headers in the project:
1
2
3#include "mydata.h" printf("the baziness is %f right nown", TheFoo.baziness);
最后
以上就是笑点低黑猫最近收集整理的关于编译时出现multiple definition of `xxxxxx'的解决办法的全部内容,更多相关编译时出现multiple内容请搜索靠谱客的其他文章。
发表评论 取消回复