extern int g_val;这时候我们再来看一下 没有报错,成功打印了。 从上面对比你知道extern的作用了吗? extern 是用来声明外部符号的,如果⼀个全局的符号在A文件中定义的,在B文件中想使用,就可以使用extern进行声明,然后使用。 如果我们用static来修饰全局变量会产生什么影响呢?来看一下 我们可以发现,原来可以运行...
就是static和extern关键字相互作用的结果。 结论:⼀个全局变量被static修饰,使得这个全局变量只能在本源⽂件内使⽤,不能在其他源⽂件内使⽤。 本质原因是全局变量默认是具有外部链接属性的,在外部的⽂件中想使⽤,只要适当的声明就可以使 ⽤;但是全局变量被 static 修饰之后,外部链接属性就变成了内部链...
* static也可以用来声明一个内部函数 2.extern * 在定义函数时,如果在函数的最左边加上关键字extern,则表示此函数是外部函数,可供其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。 * 在一个文件中要调用其他文件中的外部函数,则需要在当前文件中用extern声明该外部函数,然后就可以使用,这里...
(1)、extern:在定义函数时,如果用extern修饰,则表示此函数是外部函数,能够被其他源文件访问。如果省略extern,默认也是外部函数。 如果当前源文件想要访问另一个源文件定义的外部函数,则需要在当前文件中用extern声明该外部函数,这里的extern也可以省略。 (2)、static:在定义函数时,在函数的最左边加上static可以把该函...
extern int bGlobal; int main() { cout << bGlobal << endl; return 0; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 使用相同的命令进行编译,此时就会报错了。因为static关键字将bGlobal这个全局变量的作用域限制在了a.cpp文件中,其他文件无法访问!
下面是C语言中static和extern的'区别,一起来学习下吧: static: 一、在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。 1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。 a.在全局区分配内存。 b.如果没有初始化,其默认值为0. c....
在C语言中,extern、static、struct、enum、union和volatile等关键字具有特定的作用和用途。理解这些关键字的工作原理和应用场景,对于编写高效、可维护的代码至关重要。一、extern关键字extern关键字用于声明一个变量或函数,其定义在别的文件中。当你想在一个文件中使用另一个文件中定义的变量或函数时,可以使用extern...
- `static`关键字用于限制变量的作用域或延长变量的生命周期。 - `register`关键字指示编译器将变量存储在寄存器中,但现代编译器已经智能地处理这个问题。 - `extern`关键字用于声明在其他源文件中定义的全局变量或函数。 - `const`关键字用于定义常量,表示其值不能被修改。
static:静态存储类别,用于定义全局变量或局部变量,表示变量在程序运行期间一直存在,初始值为0或常量表达式。extern:外部存储类别,用于声明在其他文件中定义的全局变量,表示变量可以在多个文件中共享,初始值由定义时指定。register:寄存器存储类别,用于定义局部变量,表示变量尽可能存储在寄存器中,以提高访问速度,...
C语言中的每一个变量和函数有两个属性:数据类型和数据的存储类别。数据类型(整形、字符型等),存储类别是指数据在内存中存储的方法,存储方法有两大类:静态存储类和动态存储类。具体包括四种:自动的(auto),静态的(static),寄存器的(register)和外部的(extern)。