我花了两天时间研究,以避免一些数组的多重定义,我发现#ifdef并bla bla.所以我尝试使用它来测试我的程序,#ifdef它没有做任何事情,调试器仍然说有多个定义.我的程序就是这样的.

当然有多个定义,但我需要像我在图片中向您展示的那样...我认为这是编译器问题或与编译器有关的事情.
PD:我想你不需要任何代码来解决我的问题,如果你需要我会分享.
GameObject.h:
#ifndef GameObject_H
#define GameObject_H
#pragma once
float cube[] =
{
-1.0f,-1.0f,-1.0f,
-1.0f,-1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f,-1.0f,
-1.0f,-1.0f,-1.0f,
-1.0f, 1.0f,-1.0f,
1.0f,-1.0f, 1.0f,
-1.0f,-1.0f,-1.0f,
1.0f,-1.0f,-1.0f,
1.0f, 1.0f,-1.0f,
1.0f,-1.0f,-1.0f,
-1.0f,-1.0f,-1.0f,
-1.0f,-1.0f,-1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f, 1.0f,-1.0f,
1.0f,-1.0f, 1.0f,
-1.0f,-1.0f, 1.0f,
-1.0f,-1.0f,-1.0f,
-1.0f, 1.0f, 1.0f,
-1.0f,-1.0f, 1.0f,
1.0f,-1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f,-1.0f,-1.0f,
1.0f, 1.0f,-1.0f,
1.0f,-1.0f,-1.0f,
1.0f, 1.0f, 1.0f,
1.0f,-1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
1.0f, 1.0f,-1.0f,
-1.0f, 1.0f,-1.0f,
1.0f, 1.0f, 1.0f,
-1.0f, 1.0f,-1.0f,
-1.0f, 1.0f, 1.0f,
1.0f, 1.0f, 1.0f,
-1.0f, 1.0f, 1.0f,
1.0f,-1.0f, 1.0f
};
float Space3D_X[] =
{
0.0f, 0.0f, -100,
0.0f, 0.0f, 100
};
float Space3D_Z[] =
{
-100.0f, 0.0f, 0.0f,
100.0f, 0.0f, 0.0f
};
float Space3D_Y[] =
{
0.0f, -100.0f, 0.0f,
0.0f, 100.0f, 0.0f
};
typedef struct GameObject
{
int ID, parent;
Vector3 position;
Quaternion rotation;
};
struct GameObject GameObjects[65536];
typedef struct Entity
{
static int GameObjectsCount;
int CreateCube (Vector3 _position, Quaternion _rotation, int _parent);
void SetGameObjectParent (int _gameObject, int _parent);
};
Entity Entity_t;
#endif // GAMEOBJECT_H
Run Code Online (Sandbox Code Playgroud)
将定义放入cpp文件中.如果将它们放到标题中,它们将在包含标题的每个cpp文件中定义.
GameObject.h
#ifndef GAMEOBJECT_H
#define GAMEOBJECT_H
extern float cube[];
...
typedef struct GameObject
{
int ID, parent;
Vector3 position;
Quaternion rotation;
};
extern GameObject GameObjects[65536];
...
#endif
Run Code Online (Sandbox Code Playgroud)
GameObject.cpp
#include "GameObject.h"
float cube[] = {...};
...
GameObject GameObjects[65536];
Run Code Online (Sandbox Code Playgroud)