gpt4 book ai didi

c++ - 使用 extern 时 undefined reference

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:06:09 25 4
gpt4 key购买 nike

我有以下设置(希望这不是一个简单的例子):

啊啊

typedef std::map<unsigned int, float> MyClass;
extern MyClass inst;

A.cpp

MyClass inst;

B.h

#include <A.h>
void foo();

B.cpp

#include <B.h>
void foo {
inst.myClassFunc();
}

现在,当我在 B.cpp 中使用 inst 时,我得到了 undefined reference to inst

知道如何解决这个问题吗?

最佳答案

我知道这个问题很老了,但它仍然可能对某些人有帮助。

全局变量(此处:MyClass inst)不应该 extern 用于定义的编译单元它(此处:A.cpp)

实现此目的的一种方法:

  • 声明您的全局变量在单独的 header (比方说global.h)中,并使用这些将此 header 包含在*cpp 中。
  • 定义它们的编译单元删除extern关键字(例如使用#ifdef):

global.h 看起来像:

#ifdef A_H_
#define EXTERN
#else
#define EXTERN extern
#endif

EXTERN MyClass inst;

而 A.h 看起来像:

#ifndef A_H_
#define A_H_

// your header content (without globals)

#endif /* A_H_ */

和 A.cpp:

#include "A.h"
#include "global.h" // after A.h inclusion, we need A_H_ definition

希望对您有所帮助!

关于c++ - 使用 extern 时 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3658490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com