歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

一步一步學Linux C:華為面試題之extern

華為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”來聲明函數,聲明後直接使用即可。

舉個例子:

  1. #vimprint_extern.c   
  2.   
  3. #include <stdio.h>   
  4.   
  5. extern void print_extern()//這裡用不用extern都可以   
  6.   
  7. {  
  8.   
  9.      printf("helloextern test!!\n");  
  10.   
  11. }  
  12.   
  13. #vim extern_test.c   
  14.   
  15. #include <stdio.h>   
  16.   
  17.    
  18.   
  19. extern void print_extern();//其實這裡用不用extern都是可以的   
  20.   
  21. main()  
  22.   
  23. {  
  24.   
  25.      print_extern();  
  26.   
  27. }  

編譯:

  1. #gcc –c print_extern.c –o print_extern.o   
  2. #gcc print_extern.o extern_test.c –o extern_test   
  3. #./extern_test  
Copyright © Linux教程網 All Rights Reserved