各位老鐵們,大家好,今天由我來為大家分享extern c,以及c語言中的extern怎么用的相關問題知識,希望對大家有所幫助。如果可以幫助到大家,還望關注收藏下本站,您的支持是我們最大的動力,謝謝大家了哈,下面我們開始吧!
C語言中Static和Extern的具體用法,有例子最好
瀉藥,這種問題最折磨人了,說一下我的看法不對勿噴,extern有很多功能,如果順序是inta=2;externinta;這時候編譯器理解extern為引用變量,所以當inta=2;改為staticinta=2;
不會出現問題,但是順序變為externinta;staticinta=2;extern的職能就是聲明變量a,聲明了變量a,(區別正常的inta,定義)u有聲明就需要有定義,但后后面卻定義了staticint,所以編譯認為a變量只有申明沒有定義,自然報錯了。
c語言中的extern怎么用
extern在c中就是個外部申明,因為C是先申明再使用,當你想調用的變量或者函數不在你的模塊當中,你可以使用外部申明。在使用外部申明的時候要特別注意,因為這只是個申明,并不是實體,當出現聲明和實體不符的時候,編譯器是不會管的,鏈接后就可能出現錯誤。比如你的實體是intsample(intx);而你在申明的時候是externintsample(void);所以我不喜歡這種方式去聲明。特別是多個人合作項目的時候,這種方法往往導致的結果很難去debug。即使是別人寫好提供給你的,那他在修改了函數或者變量的類型,參數,往往會忘記修改給你的申明。
extern還有個作用就是當你C和C++混用的時候,比如在C++中要使用C,那么就要告訴編譯器,你這段代碼使用的是C,需要用C的編譯器去編譯,那可以使用extern"C"{.........}否則編譯會有問題
c語言extern跟static可以一起用嗎
//headfilelibrary.h
#ifndefLIBRARY_H
#defineLIBRARY_h
externFILE*logfile;//declaringanexternfilepointer
/*otherrandomcodes*/
#endif
//endofheadfile
//sourcecodemain.c
#include
#include"library.h"
FILE*logfile;//declaretheexternpointerisusedinthisfile
intmain()
{
logfile=fopen(...);
//mainfunction
return0;
}
//endofmain.c
//sourcecodebackend.c
#include"libarary.h"
staticFILE*logfile=fopen(...);
/*otherrandomcodes*/
//endofbackend.c
如上所述,extern在頭文件中聲明一個跨文件的全局變量,每一個需要使用這個變量的文件都要單獨聲明(不加extern再聲明一遍)
而static用于聲明一個靜態變量。靜態變量不能被其他文件訪問,因此可以與其他文件的全局變量同名。另外如果一個變量在文件中被聲明為靜態變量以后,該文件不能再有同名的跨文件全局變量
OK,本文到此結束,希望對大家有所幫助。