歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 一步一步學Linux C:華為面試題之extern

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

日期:2017/3/1 10:27:50   编辑:Linux編程

華為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. #include <stdio.h>
  3. extern void print_extern()//這裡用不用extern都可以
  4. {
  5. printf("helloextern test!!\n");
  6. }
  7. #vim extern_test.c
  8. #include <stdio.h>
  9. extern void print_extern();//其實這裡用不用extern都是可以的
  10. main()
  11. {
  12. print_extern();
  13. }

編譯:

  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