C语言中extern的作用
1、聲明外部的變量
由于編譯是對(duì)單個(gè)的文件進(jìn)行編譯,所以在編譯一個(gè)a.cpp文件的時(shí)候,若是要在a.cpp中使用b.cpp中的變量,直接使用則編譯肯定會(huì)報(bào)錯(cuò)的,所以這個(gè)時(shí)候應(yīng)該用extern修飾在a.cpp中所使用的b.cpp中的變量,這個(gè)時(shí)候編譯器會(huì)忽略這個(gè)錯(cuò)誤,直到鏈接的時(shí)候(“將文件融為一體”)會(huì)找到b.cpp中的變量,這樣便可以了。extern的作用相當(dāng)于讓編譯器在編譯階段忽略這個(gè)錯(cuò)誤
例:
//a.cpp
extern int a; //并未分配空間,只是通知編譯器,在其它文件定義過(guò)
printf("%d",a);
//b.cpp
int a = 9;
2、在一個(gè)C++文件中調(diào)用另一個(gè)C++文件中的函數(shù)
和第一點(diǎn)是一樣的,a.cpp中調(diào)用b.cpp中的函數(shù),需要在a.cpp中申明函數(shù)是extern的
注意,這個(gè)聲明,其實(shí)就是. h頭文件的內(nèi)容
這個(gè)extern可以省略
如果頭文件中僅僅是這個(gè)函數(shù)聲明,一是extern可以省略。二是相應(yīng)的源文件. c不用包含這個(gè)頭文件
即不需要#include xxxxx. h文件
3、在C++文件中調(diào)用C方式編譯的函數(shù)
主要原因是C++在編譯后生成的函數(shù)名和C的函數(shù)名不一樣,需要有一個(gè)轉(zhuǎn)化過(guò)程,在C++中通過(guò)extern "C"修飾函數(shù),可以表明這個(gè)函數(shù)是C編譯的,命名規(guī)則就符合C。
//a.cpp C++編譯
extern “C” //不加會(huì)報(bào)錯(cuò),提示找不到該函數(shù)
{
void print();
}
void main()
{
print();
}
//b.cpp C編譯
void print()
{
printf("123456");}
————————————————
版權(quán)聲明:本文為CSDN博主「晚餐吃什么」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/Think88666/article/details/90706719
總結(jié)
以上是生活随笔為你收集整理的C语言中extern的作用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 爬取有道翻译
- 下一篇: UVA - 1218 Perfect S