| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 582 人关注过本帖
标题:全局变量怎么写到头文件里?
收藏  订阅  推荐  打印
Sun_DN
Rank: 2
来自:NEU
等级:注册会员
帖子:48
积分:600
注册:2006-4-5
全局变量怎么写到头文件里?

翻了一下谭浩强的教材,说头文件可以包括全局变量,我试了一下,但是不成功。标准的头文件里都没有变量定义这一块,只有一些条件汇编、宏定义、函数原型声明什么的。谁能指教一二,不胜感激!
2008-7-29 17:49
crabeam
Rank: 1
等级:新手上路
帖子:27
积分:396
注册:2008-6-17

我只知道:

在头文件中不能有变量定义,而应使用声明。
2008-7-29 17:56
崔园园
Rank: 2
等级:注册会员
帖子:54
积分:610
注册:2008-4-21

头文件中可以进行全局变量的定义
2008-7-29 18:30
崔园园
Rank: 2
等级:注册会员
帖子:54
积分:610
注册:2008-4-21

头文件中可以进行全局变量的定义
2008-7-29 18:46
woshiyun
Rank: 3Rank: 3
等级:中级会员
帖子:150
积分:2094
注册:2008-6-16

头文件当然可以定义全局变量,语法上没有问题。

但肯定只有新手会这么干。
2008-7-29 20:21
lingluoz
Rank: 4
来自:苏州科技学院
等级:高级会员
威望:3
帖子:616
积分:6610
注册:2008-2-2

在頭文件里面加上int i;就定義了一個全局變量i了啊
但是一般的做法都是先在一個.c文件里面加上一句
int i;
然后再頭文件里面加上一句
entern int i;
然后連接在一起這樣就行了啊:)

MAY 1, 1964 -- The Birth of BASIC
Over 40 years later, it still enables ANYONE to write their own programs.
P.S. 革命尚未成功 同志仍需努力
2008-7-30 09:02
Sun_DN
Rank: 2
来自:NEU
等级:注册会员
帖子:48
积分:600
注册:2006-4-5
纸上谈兵

我觉得你们说得都不对,我试过了,在头文件里定义或声明变量都不行。对于6楼的说法,不对,既然已经放在头文件里,就不用外部声明了。因为文件包含在预编译的时候就把这些变量的定义什么直接复制插入程序的前面,在同一个文件里不用外部声明。因为我处理的这个程序非常大,全局变量很多,我才想把他们做成一个头文件。至于你们的热情,我非常感谢,可惜我需要的是对这方面有实际经验的人给我一些指点,显然,你们都只会纸上谈兵,尤其是5楼。

[ 本帖最后由 Sun_DN 于 2008-7-30 10:20 编辑 ]

人不己知,而不愠,不亦君子乎?
2008-7-30 10:11
VxWorks
Rank: 4
来自:WindRiver
等级:高级会员
威望:1
帖子:575
积分:6976
注册:2007-11-24

人不知,而不愠,不亦君子乎?

--------------------------------------------------------------
解决方法:
1.在一个.c文件中统一定义所需全局变量,例如:
/*
*   foo.c  global variable definition
*/
int  _a;
double _b;
char _c;
2.在一个.h文件中统一声明所有的全局变量。例如:
/*
*   foo.h  global variable declaration
*/
#ifndef _FOO_H_
#define _FOO_H_
extern int  _a;
extern double _b;
extern char _c;
#endif

3.要使用这些全局变量时将头文件foo.h包含进来:
#include " foo.h"

[ 本帖最后由 VxWorks 于 2008-7-30 10:28 编辑 ]

Yesterday is a history, tomorrow is a mystery, and now is a gift, that's why is called present.
2008-7-30 10:27
Sun_DN
Rank: 2
来自:NEU
等级:注册会员
帖子:48
积分:600
注册:2006-4-5

非常感谢,我试试

人不己知,而不愠,不亦君子乎?
2008-7-30 10:35
woshiyun
Rank: 3Rank: 3
等级:中级会员
帖子:150
积分:2094
注册:2008-6-16

你自己有没有搞错。

我说的新手的做法:(非常非常不推荐)
//file: headfile.h
int a;

//file: mainfile.c
#include<stdio.h>
#include"headfile.h"
int main(void)
{
   a=a*2;
   printf("%d\n",a);
   return 0;
}

难道会不行???

非新手的做法,参照8#
2008-7-30 10:48
共有 581 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.054387 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved