c语言全局变量多文件
① 怎样使c语言全局变量在多个文件中使用
extern 关键字x0dx0aextern int i;这样就可以在其他文件中使用x0dx0a在头文件中声明x0dx0aa.hx0dx0aextern int i;x0dx0a在其他某个c文件中定义x0dx0aint i =0;x0dx0a其他要使用i变量的c源文件只需要include"a.h"就可以
② 在C语言中,一个文件中定义的 全局变量,在另一个文件中能用吗
全局变量extern可以在其他源程序中使用;全局变量static只能在本程序中使用。
全局变量是使用相同的内存块在整个类中存储一个值。
全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。
(2)c语言全局变量多文件扩展阅读:
使用注意
全局变量的存在主要有以下一些原因:
1、使用全局变量会占用更多的内存(因为其生命期长),不过在计算机配置很高的今天,这个不应该算什么问题,除非使用的是巨大对象的全局变量,能避免就一定要避免。
2、使用全局变量程序运行时速度更快一些(因为内存不需要再分配),同样也快不了多少。
3、对于局部变量的名字空间污染,这个在不使用太多变量时是可以避免的。
4、当全局变量与局部变量重名的时候,起作用的是局部变量,全局变量被屏蔽掉。
5、还可以用extern在函数外对全局变量声明,使全局变量的作用域从声明处到文件的结束。
6、全局变量的优先度低于局部变量。
③ c语言 中 为什么不将全局变量的定义放在头文件中
首先要说明什么是全局变量,c语言中全局变量一般是指定义在函数体外的变量。全局变量按可访问性可分为外部变量和内部变量。
内部变量是指使用了static关键字修饰的全局变量,它的可访问范围(作用域)被限定在本源文件所在的链接文件模块中,不能被其它文件模块引用。反之没有被static关键字修饰的全局变量则是外部变量,其它文件模块可以通过extern关键字引用该全局变量并访问。
要说明的是全局变量无论是内部变量还是外部变量,的存储类别都是静态的,也就是放到静态内存区域中,它编译链接阶段就已经分配好了固定的内存。
搞清楚上面的内容,就很容易得出若把全局变量放在头文件会有哪些问题;
一 对内部变量来说,每个include该头文件的文件模块中都会单独为这个内部变量分配静态内存空间,这个空间是相对独立的,是一种空间浪费,同时还失去了全局变量访问一致性的特点,实在没有什么意义。如果这个头文件只被一个模块使用,对于这个文件模块来说应该没啥问题。
二 对外部变量来讲,这个头文件被多个文件模块include的情况下,链接过程会报错,因为符号冲突,所有include这个头文件的模块都会有这个全局符号。在这个头文件仅仅只被一个模块include的时候可以正常使用。
经上分析得出要避免全局变量定义在头文件中,因为当这个头文件被多方include的时候会产生一些不必要的麻烦,就这么多。
全局变量作用域范围较广,被错误修改后排查定位问题比较困难,若非必要尽少使用。
下面说一下比较好的方式就是全局变量只定义在实现文件(.c,.m)中,对内部变量没啥说的它只在文件模块内部使用,对外部变量可以在该模块头文件中使用extern关键字修饰一下,这样其它文件模块只要直接include该头文件就可以使用模块中的外部变量了。
④ C语言所谓的全局变量在多个.c文件中到底该怎样使用
例如,
c 中 int main(){} int A; void f(void)
main想用A ,必须声明 extern A;f可以直接用;
假如2.c也想用, 也得声明 extern A;
假如你不想让2.c用, 就 static int A;定义成静态全局变量
⑤ C语言多文件编程
多个c文件的作用在于将不同功能的代码分开来实现,这样便于代码重用、代码编译和代码管理。
一个程序中,只能有一个main函数,这是整个程序的起点和入口。如果其他人也实现了该函数,则必须要重新命名,然后在唯一的main函数中统一调用。
多个c文件的合并并没有顺序要求,任何一个都可以先编译或者后编译。
extern表示导出,可以用于函数和变量。用于函数的时候,表示这是一个外部函数,用于变量的时候,表示这是一个外部变量。
如果使用一个c文件,多个h文件,则会导致改动代码任何一个地方,都要重新编译所有的文件,效率上非常不划算。而使用多个c文件,当代码发生变更的时候,仅仅相关的c文件代码需要重新编译,其他代码则可以保持不变,不用参与编译。
函数中的局部变量无法在函数外部调用,只能通过参数传递的方式传递给第三方函数。因为局部变量是出于栈上面的,栈会随着函数调用完毕的时候被系统回收。
⑥ C语言中怎样在头文件中定义一个能够在所有文件中都可以使用的全局数组变量
C语言可以通过在.c文件中定义,头文件中extern的方式实现一个能够在所有文件中都可以使用的全局数组变量。
具体做法如下:
设有一个多项目文件有 1.c、2.c和3.c三个源程序文件;
如果有一个全局数组需要所有文件使用,那么可以添加一个data.c文件,在其中添加全局数组的定义;
向项目中添加data.h文件,在data.h文件中用 extern声明该数组;
只需要在相应的.c文件中添加#include "data.h",那么久可以使用data.c中的全局数组了。
⑦ 我在用C语言编写程序,想把全局参数变量设置成一个文件,多个文件共用这些全局变量,如何做到谢谢!
楼上说的对。你用其它软件也是一样的设置。.h与.c,你只要include进去,就可以正常使用。
例如在IAR中
定义一个.h文件
#ifndef __IODEF_H
#define __IODEF_H
//中间填写你要定义的全局变量
endif
然后即可在.c文件中把这个文件include进来。