A君这样问:c语言中extern修饰的函数原型与不用extern修饰的函数原型有没有区别?
B君这样答:
具体见《C++程序设计教程》钱能 清华大学出版社
第101页“默认的函数声明或定义总是extern的,所以......”
一些同志应该分清变量和函数所用的extern修饰,在用法上是不同的。
不要把变量的extern用法想当然的套用到函数上。
C君这样答:
函数根本不按照全局和局部的概念进行区分,因为C不支持函数的嵌套定义,而且也不像C++可以把函数放在类域/名字空间域里面做成员。
extern在这里是指明函数的链接域用的,非static情况下,产生的链接符号是全局的,指定static的时候是使用了文件域,这个都是在链接器里面的概念。
c语言中extern修饰的变量与不用extern修饰的变量有没有区别?
我的回答:
有extern修饰的变量是个声明,声明在其他文件定义的变量在这个文件被使用;没有extern修饰的变量是全局变量定义,这个全局变量如果要被其他文件使用,其他文件必须要加extern修饰来声明。