程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Linux下C編程:華為C語言面試題之extern

Linux下C編程:華為C語言面試題之extern

編輯:關於C語言

華為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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved