我是靠谱客的博主 笑点低黑猫,最近开发中收集的这篇文章主要介绍编译时出现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

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'的解决办法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部