全局变量
同问 外部全局变量定义在C文件还是头文件
2011-05-05 09:58 alwlnso | 分类:C/C++ | 浏览2761次
全局变量定义在C文件跟定义在头文件里面有什么不一样,一般怎么用, 比如说我要写5110液晶,得自己定义字符数据,这些数据用一个数组定义,那么应该在什么文件(.c还是.h)定义呢,
我来帮他解答
提问者采纳
2011-05-05 10:02
如果全局变量只在你编写的文件中使用,就在源文件中定义;如果团队合作,别人的代码需要用你的全局变量,就在头文件中定义,那样别人只需包含你的头文件,然后声明一下变量即可
追问
比如:
我在源文件5110.c中声明
#include "5110.h"
extern uchar code font_code[][16];
在头文件5110.h中这样给它初始化
uchar code
Ruo[][16]={{0x10,0x28,0x27,0x22,0xF6,0x2A,0xA2,0x6A,0x24,0x23,0x
F2,0x26,0x2A,0x22,0x02,0x00,},
{0x21,0x21,0x11,0x09,0xFD,0x4B,0x49,0x49,0x49,0x49,0x49,0x49,0x
F9,0x01,0x01,0x00}};
出错:FONT_CODE.C(4): error C279: 'Ruo': multiple initialization
回答
C语言中数组在定义时可以像你这样初始化,不能在定义之后,或者声明
之时这样初始化:
uchar code
Ruo[][16]={{0x10,0x28,0x27,0x22,0xF6,0x2A,0xA2,0x6A,0x24,0x23,0x
F2,0x26,0x2A,0x22,0x02,0x00,},
{0x21,0x21,0x11,0x09,0xFD,0x4B,0x49,0x49,0x49,0x49,0x49,0x49,0x
F9,0x01,0x01,0x00}};
追问
在这里我就是给它定义,在源文件中是声明,声明的时候没错吧。注意我
是在头文件里对数组进行定义。原来的问题就是问,是在源文件中定义,
还是在头文件中定义。
回答
你是不是有多个源文件包含了这个头文件,如果是的话,你的头文件没有
写入宏,让头文件不能多次包含
追问
是的,但是我的头文件中用
#ifndef __5110_H__
#define __5110_H__
……
#endif
这样的形式,别人教我的,这样不行了么,
评论(2)|1
efanabe |来自团队不知百度知 |九级采纳率61%
擅长:考研C/C++数学英语考试
按默认排序|按时间排序
其他5条回答
2011-05-05 10:00cvduan|六级
都可以,如果不是特别必要,尽量少用全局变量。
追问
用了当然是必要的啦
回答
定义在头文件里的话,include头文件就可到处使用这个变量,如果是在.c
中定义,还需要在使用该变量的.c文件中用extern关键字声明该变量。 评论|0
2011-05-05 12:20tzhangofseu|四级
如果是常量 就定义在头文件里面 如果不是const变量就定义在源文件里面。 追问
uchar code
Ruo[][16]={{0x10,0x28,0x27,0x22,0xF6,0x2A,0xA2,0x6A,0x24,0x23,0x
F2,0x26,0x2A,0x22,0x02,0x00,},
{0x21,0x21,0x11,0x09,0xFD,0x4B,0x49,0x49,0x49,0x49,0x49,0x49,0x
F9,0x01,0x01,0x00}};
这样算不算常量
回答
不算常量,我说的常量是加const的。
评论(1)|0
2011-05-05 11:00展翅飞啦|二级
在一个函数内部定义的变量只在本函数范围内有效(即只在本文件内有效),因此也叫作局部变量。
而在函数之外定义的变量是外部变量,也称为全局变量。全局变量可以为本文件内其他函数所公用。它的作用范围为从定义变量的位置开始到本源文件结束。 “5110液晶”这个我觉得应该在头文件里定义。
追问
我提问的情况是,在不同的文件之间全局变量的调用。那几句话我在
上
看了很多次了。我要的是定义一堆数据以便调用。它们的值不用改变。 评论|0