那年,一步一步學linux c —華為面試題之extern

來源:互聯網
上載者:User

 

轉載請註明出處:http://blog.csdn.net/muge0913/article/details/7311082

華為C語言面試題
如何引用一個已經定義過的全域變數?
答:extern
可以用引用標頭檔的方式,也可以用extern關鍵字,如果用引用標頭檔方式來引用某個在標頭檔中聲明的全域變理,假定你將那個變數寫錯了,那麼在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那麼在編譯期間不會報錯,而在串連期間報錯
                                

3. 此外,extern修飾符可用於指示C或者C++函數的調用規範。比如在C++中調用C庫函數,就需要在C++程式中用extern “C”聲明要引用的函數。這是給連結器用的,告訴連結器在連結的時候用C函數規範來連結。主要原因是C++和C程式編譯完成後在目標代碼中命名規則不同


1.extern用在變數聲明中常常有這樣一個作用,你在*.c檔案中聲明了一個全域的變數,這個全域的變數如果要被引用,就放在*.h中並用extern來聲明。
2.如果函數的聲明中帶有關鍵字extern,僅僅是暗示這個函數可能在別的源檔案裡定義,沒有其它作用。即下述兩個函式宣告沒有區別:
extern void print_externifo(); 和voidprint_externifo();


extern在 函數中的使用:
如果定義函數的c/cpp檔案在對應的標頭檔中聲明了定義的函數,那麼在其他c/cpp檔案中要使用這些函數,只需要包含這個標頭檔即可。
如果你不想包含標頭檔,那麼在c/cpp中聲明該函數。一般來說,聲明定義在本檔案的函數不用“extern”,聲明定義在其他檔案中的函數用“extern”,這樣在本檔案中調用別的檔案定義的函數就不用包含標頭檔include“*.h”來聲明函數,聲明後直接使用即可。

舉個例子:

#vimprint_extern.c#include <stdio.h>extern void print_extern()//這裡用不用extern都可以{     printf("helloextern test!!\n");}#vim extern_test.c#include <stdio.h> extern void print_extern();//其實這裡用不用extern都是可以的main(){     print_extern();}

編譯:


#gcc –c print_extern.c –o print_extern.o#gcc print_extern.o extern_test.c –o extern_test#./extern_test

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.