C++ extern object 数组
c++ extern object array
我正在尝试创建一个 extern object 数组,但我想我遇到了链接问题。我在 class.hpp 文件上定义了一个 class,在 Declarations.cpp 文件中我包含了 class header 然后我继续创建一个 class,然后在我的第二个 header 文件中,我将相同的数组声明为 extern,这个 header 将包含在我需要使用它的地方,然后 main_header.hpp 文件用于初始化extern array ,因此它们可以在包含 main_header.hpp 的任何地方使用。
但我得到:
error: undefined Reference to "myArray" on main_header.hpp
下面的代码是重现问题的最少代码,在这里我省略了 header 守卫和不重要的代码。
这是我的设置:
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 */
如何正确声明一个外部 object 数组?
提前致谢!
Cheche Romo
编辑:
我正在 PSoC Creator 上使用 g++ 进行编译。
编辑2:
如果在我的 Declarations.cpp 我添加
int var = 0;
然后在 main_header.hpp 我添加
extern int var;
然后在主 cpp
int a = var;
它显示 var 没有错误,只有 myArray。
将main_header.hpp更改为:
extern myClass myArray[];
我正在尝试创建一个 extern object 数组,但我想我遇到了链接问题。我在 class.hpp 文件上定义了一个 class,在 Declarations.cpp 文件中我包含了 class header 然后我继续创建一个 class,然后在我的第二个 header 文件中,我将相同的数组声明为 extern,这个 header 将包含在我需要使用它的地方,然后 main_header.hpp 文件用于初始化extern array ,因此它们可以在包含 main_header.hpp 的任何地方使用。
但我得到:
error: undefined Reference to "myArray" on main_header.hpp
下面的代码是重现问题的最少代码,在这里我省略了 header 守卫和不重要的代码。
这是我的设置:
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 */
如何正确声明一个外部 object 数组?
提前致谢!
Cheche Romo
编辑: 我正在 PSoC Creator 上使用 g++ 进行编译。
编辑2:
如果在我的 Declarations.cpp 我添加
int var = 0;
然后在 main_header.hpp 我添加
extern int var;
然后在主 cpp
int a = var;
它显示 var 没有错误,只有 myArray。
将main_header.hpp更改为:
extern myClass myArray[];