首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

a.cpp,b.cpp同时incluce"c.h"的有关问题!

2012-02-06 
a.cpp,b.cpp同时inclucec.h的问题!急!!!c.h如下:#ifndef_GLOBAL_VAR_FUNC_H#define_GLOBAL_VAR_FUNC_Hdo

a.cpp,b.cpp同时incluce"c.h"的问题!急!!!
c.h如下:
#ifndef   _GLOBAL_VAR_FUNC_H
#define   _GLOBAL_VAR_FUNC_H
double   a=2.0;
double   T=1.0;
double   r;
int   M,N;
double   Beginfun(double   x);
#endif
由于a.cpp,b.cpp都要用到”c.h“中的变量或函数!
说以在a.cpp,b.cpp中都加了#include   "c.h ",但是会有重复定义错误!
如果只在一个文件(如a.cpp中)加入,又会有b.cpp   中没有定义的错误!
怎么解决?请高手帮帮忙,谢谢!

[解决办法]
//c.h
#ifndef _GLOBAL_VAR_FUNC_H
#define _GLOBAL_VAR_FUNC_H
extern double a;
extern double T;
extern double r;
extern int M,N;
double Beginfun(double x);
#endif
//a.cpp
#include "a.h "
double a=2.0; //定义
double T=1.0;
double r;
int M,N;
..............

//b.cpp
#include "a.h "
// use a, T, r, M, N, 但不要定义它们
.................
[解决办法]
c.h如下:
#ifndef _GLOBAL_VAR_FUNC_H
#define _GLOBAL_VAR_FUNC_H
static double a=2.0;
static double T=1.0;
static double r;
static int M,N;
double Beginfun(double x);
#endif
[解决办法]
lightnut和akirya的写法都可以,但是定义的变量的作用域不同,lightnut定义的变量为全局变量,而akirya定义的变量的作用域为文件作用域
[解决办法]
你应该这样:
c.h如下:
#ifndef _GLOBAL_VAR_FUNC_H
#define _GLOBAL_VAR_FUNC_H
extern double a;
extern double T;
extern double r;
extern int M,N;
double Beginfun(double x);
#endif

添加一个
c.cpp如下:
#include "c.h "
double a=2.0;
double T=1.0;
double r;
int M,N;

你既然知道.h里面只能写函数的声明,那么也应该能理解.h里面也只能写全局变量的声明(extern)吧?

热点排行
Bad Request.