16,472
社区成员
发帖
与我相关
我的任务
分享
extern double x[3*NUM];
extern double y[3*NUM];
extern double _f;
//relative.h
//结构体
struct gloabals {
double x[3*NUM];
double y[3*NUM];
double _f;
};
extern gloabals g_gloabals;//全局结构变量声明,union,struct,class 都可以这么做
//类,可以定义类的静态变量,其他类或者函数通过类名引用,类的所有对象,可以像普通成员,那样引用。
class data{
public :
static double x[3*NUM];//类的静态变量,属于整个类,这样声明;union,struct,class 都可以这么做。
static double y[3*NUM];//
static double _f; //
};
//relative.cpp
gloabals g_gloabals={{0},{0},0 };//全局结构变量定义,union,struct,class 都可以这么做
double data::x[3*NUM]={0};//类的静态变量,这样定义;union,struct,class 都可以这么做。
double data::y[3*NUM]={0};
double data::_f[3*NUM]={0};
void usegloabals()
{
//结构体
g_gloabals.x[0]=10;
g_gloabals.y[0]=10;
g_gloabals._f=100.123;
//类
data::x[0]=10;
data::y[0]=10;
data::_f=10;
data d;
d.x[1]=20;
d.y[2]=30;
d._f =45.6;
data *p =&d;
d._f=3.0;
data &r =d;
r._x=4.0;
}
//relative.h
extern double x[];
extern double y[];
extern double _f;
//relative.cpp
double x[3*NUM]={0};//如果有可能,也初始化一下
double y[3*NUM]={0};//如果有可能,也初始化一下
double _f=0;//单独的外部变量,最好初始化一下。
[/quote]
我想问一下,为什么在头文件里定义了还要在CPP文件里面在定义一次呢?[/quote]
那不是定义,那个是申明[/quote]
这么做还是有错啊,错误显示在头文件
e:\danhangdai(模型链接)\relative.h(22) : error C2071: 'x' : illegal storage class
e:\danhangdai(模型链接)\relative.h(22) : warning C4200: nonstandard extension used : zero-sized array in struct/union
e:\danhangdai(模型链接)\relative.h(22) : error C2071: 'y' : illegal storage class
e:\danhangdai(模型链接)\relative.h(22) : error C2229: class 'relative' has an illegal zero-sized array
e:\danhangdai(模型链接)\relative.h(22) : warning C4200: nonstandard extension used : zero-sized array in struct/union
e:\danhangdai(模型链接)\relative.h(22) : error C2071: '_f' : illegal storage class
e:\danhangdai(模型链接)\relative.h(22) : error C2229: class 'relative' has an illegal zero-sized array[/quote]
这是外部变量的定义方式,你不是在结构体,共用体,类里也这样定义吧?
结构体
//relative.h
struct gloabals {
double x[3*NUM]
double y[3*NUM]
double _f;
};
//relative.cpp
extern gloabals g_gloabals={{0},{0},0 };
void usegloabals()
{
g_gloabals.x[0]=10;
g_gloabals.y[0]=10;
g_gloabals._f=100.123;
}
//relative.h
extern double x[];
extern double y[];
extern double _f;
//relative.cpp
double x[3*NUM]={0};//如果有可能,也初始化一下
double y[3*NUM]={0};//如果有可能,也初始化一下
double _f=0;//单独的外部变量,最好初始化一下。
[/quote]
我想问一下,为什么在头文件里定义了还要在CPP文件里面在定义一次呢?[/quote]
那不是定义,那个是申明[/quote]
这么做还是有错啊,错误显示在头文件
e:\danhangdai(模型链接)\relative.h(22) : error C2071: 'x' : illegal storage class
e:\danhangdai(模型链接)\relative.h(22) : warning C4200: nonstandard extension used : zero-sized array in struct/union
e:\danhangdai(模型链接)\relative.h(22) : error C2071: 'y' : illegal storage class
e:\danhangdai(模型链接)\relative.h(22) : error C2229: class 'relative' has an illegal zero-sized array
e:\danhangdai(模型链接)\relative.h(22) : warning C4200: nonstandard extension used : zero-sized array in struct/union
e:\danhangdai(模型链接)\relative.h(22) : error C2071: '_f' : illegal storage class
e:\danhangdai(模型链接)\relative.h(22) : error C2229: class 'relative' has an illegal zero-sized array
//relative.h
extern double x[];
extern double y[];
extern double _f;
//relative.cpp
double x[3*NUM]={0};//如果有可能,也初始化一下
double y[3*NUM]={0};//如果有可能,也初始化一下
double _f=0;//单独的外部变量,最好初始化一下。
[/quote]
我想问一下,为什么在头文件里定义了还要在CPP文件里面在定义一次呢?[/quote]
那不是定义,那个是申明
//relative.h
extern double x[];
extern double y[];
extern double _f;
//relative.cpp
double x[3*NUM]={0};//如果有可能,也初始化一下
double y[3*NUM]={0};//如果有可能,也初始化一下
double _f=0;//单独的外部变量,最好初始化一下。
[/quote]
我想问一下,为什么在头文件里定义了还要在CPP文件里面在定义一次呢?
//relative.h
extern double x[];
extern double y[];
extern double _f;
//relative.cpp
double x[3*NUM]={0};//如果有可能,也初始化一下
double y[3*NUM]={0};//如果有可能,也初始化一下
double _f=0;//单独的外部变量,最好初始化一下。