extern的用法总结
- 函数声明是可有可无的,因为函数不加修饰符默认是extern的;
- 全局变量在其他文件中使用时,extern关键词是必须的,如果变量在其他文件中没有extern且没有显示的初始化,则会被当成变量的定义。局部变量是不需要extern关键字描述的,而且局部变量在程序运行时才在堆栈分配内存。
- 当需要引用一个全局变量的时候,需要用到extern关键字修饰这个全局变量,没有extern关键字修饰就会成为一个全局变量的定义而不是声明。
extern "C"的使用
当我们需要在某种编译环境下使用其他的编程语言所写的函数,那么在调用函数时需要告诉编译器有不同的需求。这时extern作为一个连接指示符在起作用,连接指示符的一种形式就是extern后面跟上一个字符串常量以及一个普通的函数;声明的函数虽然是使用另一种语言写的,但是调用它时仍然需要检查传入的类型是否匹配。多个函数声明可以用花括号包含在链接指示符语句中。当复合语句链接指示符的括号中含有#include 时,在头文件中的函数声明都被假定是用链接指示符的程序设计语言所写的;在前面的例子中在头文件中声明的函数都是C函数。