【发布时间】:2015-05-21 16:46:50
【问题描述】:
我花了大约 2 天的时间研究以避免某些数组的多重定义,我发现了 #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
【问题讨论】:
-
不要将定义放入头文件中。
-
通常的方法是用
ifndef检查给定的token是否被定义,然后定义它,编写所有代码并以endif结束。 -
我告诉过你我已经这样做了,但还是要检查代码。
-
回复@KerrekSB 的评论,不要将定义放入头文件中。 Kerrek 的意思是,不要将定义放入头文件中。您的
float cube[] = ...是一个定义。不要在头文件中这样做。这会带来很多麻烦。