这一点是它==与全局变量的区别==。 (3) 当static用来修饰全局变量时,它就==改变了全局变量的作用域,使其不能被别的程序extern==,限制在了当前文件里,但是==没有改变其存放位置,还是在全局静态储存区==。 static 其他使用建议: (1) 若全局变量仅在单个C文件中访问,则可以将这个变量修改为静态全局变量,以=...
具体差别:首先,static与extern是一对“水火不容”的家伙,也就是说extern和static不能同时修饰一个变量;其次,static修饰的全局变量声明与定义同时进行,也就是说当你在头文件中使用static声明了全局变量后,它也同时被定义了;最后,static修饰全局变量的作用域只能是本身的编译单元,也就是说它的“全局”只对本编译单元...
* 在定义函数时,如果在函数的最左边加上关键字extern,则表示此函数是外部函数,可供其他文件调用。C语言规定,如果在定义函数时省略extern,则隐含为外部函数。 * 在一个文件中要调用其他文件中的外部函数,则需要在当前文件中用extern声明该外部函数,然后就可以使用,这里的extern也可以省略。
extern:声明变量是在其他文件正声明(也可以看做是引用变量) static :声明静态变量
extern 是外部变量 static 是静态变量 因此,extern只能有一个,也只能定义一次,而static可以有多个,可以重复定义,无论如何定义,它们所指的对象仍然是同一个
* 当然,extern关键字还是适用的,比如: 和 或者是: 和 上面的两种情况下,test.c和main.c中使用的全局变量a都还是代表着同一个变量 注意了,不可以两个文件的所有全部变量a都用extern,下面的做法是错误的: 和 因为extern是用来声明一个已经定义过的变量,这两个文件都是在声明变量,没有人定义变量,在链接的时候...
几乎完全没有关系的两个关键字,区别确实不好回答。联系估计就是都是类型修饰符,区别太多。一般来说,extern 修饰的是全局变量或者函数,表示外部引用。对于C++语言还有一个特殊用法,extern "C" 表示该段程序应认为是C语言编写。static 一般表示局部静态变量,可以用在函数内,也可以用在文件内。
main.cpp:6:15: error: ‘getmax’ was not declared in this scope 6 | int max = getmax(a, b); | ^~~~ 由于对 C 和 C++ 的区别不太了解,同时对编译也不太懂,所以恳请大佬指教。