说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

关于全局变量的问题....在线等!谢谢了!

编辑:说三道四文库 发布时间:2018-07-19 10:11
HTML文档下载 WORD文档下载 PDF文档下载
function.h
--------
#ifndef Function_H
#define Function_H

//全局变量
extern char *fp;

#endif
---------

在unit1和unit2里面#include“function.h”给。fp却会变化。为什么?是因为没有NEW么?
我用了NEW,改成了:
extern char *fp=new char[256];

编译器却出现
[Linker Warning] Public symbol '_fp' defined in both module D:\DOCUMENTS AND SETTINGS\1\MY DOCUMENTS\CODE\UNIT1.OBJ and D:\DOCUMENTS AND SETTINGS\1\MY DOCUMENTS\CODE\UNIT2.OBJ
这样类似的好几条WARNING。为什么?是因为重复定义么?我不是已经用了#ifndef了么?到底这个问题怎么解决啊~~谢谢!
3806642(冰柜头的尸体) 02:01:20
你的.h里面对的,直接exten char *fp;
你的cpp里面用
char *fp;声明
然后在cpp的一个函数里面
给他分配空间
 
3806642(冰柜头的尸体) 02:01:54
而且在另外的模块里面使用fp的时候,
你要保证已经给他分配了空间
就对了 
85790851(abao) 02:02:10
为什么非要用指针阿?
char fp[256]不是 很好的吗? 
3806642(冰柜头的尸体) 02:02:14
声明的时候不能写new 
12961825(琴声刺骨) 02:02:25
数组似乎不好用啊 
3806642(冰柜头的尸体) 02:02:40
可以的,用extern char fp[256];
在 a.h 文件中,

extern Integer var;

在 a.cpp 文件中,

Integer var;


在其它需要用到 var 变量的 .cpp 中,

#include "a.h"

然后就可以在该 .cpp 中访问 var 了。
肯定是重复定义!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘