在变量定义前加extern关键字表示声明一个变量但不定义它 。
他表示这只是一个声明,但是他的定义在其他地方,关键字extern 表示变量是在文件以外 定义的,活着在文件的后面部分才定义的。
声明函数、
extern int func1(int length,int width);//这种声明方式和一般的func() 函数声明方式一样,因为没有函数体,,编译器必定会把他作为声明而不是函数定义。 extern 关键字对函数来说是多余的,可选的。
链接指示的第一种形式包含一个关键字extern,后面是一个字符串字面值常量以及一个”普通的”函数声明。其中的字符串字面值常量指出了编写函数所用的语言。编译器应该支持对C语言的链接指示。此外,编译器也可能会支持其它语言的链接指示,如extern “Ada”、extern “FORTRAN”等。
extern "C" void echo(const char * fmt, ...);
extern"C"的主要作用就是为了能够正确实现C++代码调用其它C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般只包括函数名。
原文链接:https://blog.csdn.net/fengbingchun/article/details/78634831