我是靠谱客的博主 笑点低黑猫,这篇文章主要介绍编译时出现multiple definition of `xxxxxx'的解决办法,现在分享给大家,希望可以做个参考。

出错原因:一般是因为在头文件里进行了定义或者实例化,导致多重定义,记住在头文件里只进行声明。

1、Don't define variables in headers. Put declarations in header and definitions in one of the .c files.

In config.h

复制代码
1
extern const char *names[];

In some .c file:

复制代码
1
2
3
4
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:

复制代码
1
2
3
4
5
6
struct 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内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(108)

评论列表共有 0 条评论

立即
投稿
返回
顶部