C 重力模拟器,碰撞检测,矢量
我正在用矢量操纵和引力常数创建一个重力模拟器。 我为实体定义了两个结构C 重力模拟器,碰撞检测,矢量,c,vector,collision-detection,C,Vector,Collision Detection,我正在用矢量操纵和引力常数创建一个重力模拟器。 我为实体定义了两个结构 typedef struct { double vector[3]; } Vector; typedef struct { Vector colour; double mass; double radius; Vector position; Vector velocity; Vector accel; } Object; 我有很多向量算术函数,包括: Vector
typedef struct {
double vector[3];
} Vector;
typedef struct {
Vector colour;
double mass;
double radius;
Vector position;
Vector velocity;
Vector accel;
} Object;
我有很多向量算术函数,包括:
Vector VectorUnit(Vector a) {
Vector b;
int i;
for (i = 0; i < VECTOR_DIM; i++)
b.vector[i] = (a.vector[i]) / (VectorMag(a));
return (b);
}
它与诸如VectorUnitBodys[j]之类的函数调用有什么问题;
如前所述,使用my function的内部代码可以完美地编译。您在调用函数时没有先声明它们。这是非法的,因为C99。在C89中,它意味着隐式地将函数声明为返回int 在调用函数之前,您需要为其提供原型,例如,具有具有以下内容的头文件:
Vector VectorUnit(Vector a);
或者,如果该函数仅出现在一个.c文件中,请在文件顶部附近声明:
static Vector VectorUnit(Vector a);
或者以不同的顺序放置函数,使VectorUnit的主体位于调用它的任何函数之前
static Vector VectorUnit(Vector a);