概述
出错原因:一般是因为在头文件里进行了定义或者实例化,导致多重定义,记住在头文件里只进行声明。
1、Don't define variables in headers. Put declarations in header and definitions in one of the .c files.
In config.h
extern const char *names[];
In some .c file:
const 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
:
struct Foo {
float baryness;
float baziness;
};
extern struct Foo TheFoo;
In one C file:
#include "mydata.h"
struct Foo TheFoo; //实例化
In other headers in the project:
#include "mydata.h"
printf("the baziness is %f right nown", TheFoo.baziness);
最后
以上就是笑点低黑猫为你收集整理的编译时出现multiple definition of `xxxxxx'的解决办法的全部内容,希望文章能够帮你解决编译时出现multiple definition of `xxxxxx'的解决办法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复