我正在尝试创建一个extern对象数组,但我认为我有一个链接问题。我在class.hpp文件中定义了一个类,在Declarations.cpp文件中我包含了类头,然后我继续创建类的数组,然后在我的第二个头文件中我将相同的数组声明为extern,这个头将被包括在我需要使用它的位置,然后main_header.hpp文件用于初始化extern数组,因此它们可以在包含main_header.hpp的任何地方使用。
但我得到了:
错误:未定义对main_header.hpp上的“myArray”的引用
下面的代码是重现问题的最小代码,在这里我省略了不重要的标题保护和代码。
这是我的设置:
class.hpp
class myClass
{
//Class Declaration
};
/* end of file */
Declarations.cpp
#include "class.hpp"
myClass myArray[4];
/* end of file */
main_header.hpp
#include "class.hpp"
extern myClass *myArray;
/* end of file */
main_header.cpp
#include "main_header.hpp"
void setup()
{
for(uint8_t i = 0; i < 4; i++)
{
myArray[i] = myClass();
myArray[i].begin();
}
}
/* end of file */
的main.cpp
#include "main_header.hpp"
void function()
{
setup();
myArray[0].test();
}
/* end of file */
如何正确声明外部对象数组??
提前致谢!
Cheche Romo
编辑: 我正在使用PSoC Creator上的g ++进行编译。
EDIT2:
如果在我的Declarations.cpp中,我添加
int var = 0;
然后在main_header.hpp上添加
extern int var;
然后在主cpp上
int a = var;
它显示var没有错误,仅适用于myArray。
答案 0 :(得分:1)
将main_header.hpp更改为:
extern myClass myArray[];