搜尋
首頁php教程PHP开发extern使用方法總結

extern使用方法總結

Dec 19, 2016 pm 02:33 PM
extern

extern

   在來源檔案A裡定義的函數,在其它原始檔案裡是看不見的(即不能存取)。為了在原始檔B裡能呼叫這個函數,應該在B的頭部加上一個外部聲明:

   
  extern   函數原型;    


  這樣,並在該源文件B裡調用源函數了。   
  注意這裡的用詞區別:在A裡是定義,在B裡是聲明。一個函數只能(也必須)在一個原始檔裡被定義,但是可以在其它多個來源檔案裡被宣告。定義引起儲存分配,是真正產生那個實體。而聲明並不會引起儲存分配。打一個粗俗的比方:在來源檔B裡聲明後,好比在B裡開了一扇窗,讓它可以看到A裡的那個函數。

 

#i nclude "stdafx.h"


  1.extern用在變量聲明中常常有這樣一個作用,你在*.c文件中聲明了一個全局的變量,這個全局的變量如果要被全域的變量如果要被引用,就放在*.h中並用extern來聲明。
  2.如果函數的聲明中帶有關鍵字extern,只是暗示這個函數可能在別的源文件裡定義,沒有其它作用。即下述兩個函數宣告沒有差異:
  extern int f(); 和int f(); 
  =========== = ======
  如果定義函數的c/cpp檔案在對應的頭檔中宣告了定義的函數,那麼在其他c/cpp檔中要使用這些函數,只需要包含這個頭檔即可。
  如果你不想包含頭文件,那麼在c/cpp中聲明該函數。一般來說,聲明定義在本文件的函數不用“extern”,聲明定義在其他文件中的函數用“extern”,這樣在本文件中調用別的文件定義的函數就不用包含頭檔
  include “* .h」來聲明函數,聲明後直接使用即可。
  ===================
  //extern.cpp內容如下:
  
  / / extern.cpp : Defines the entry point for the console application.
  //
  
   i nclude "stdafx.h"
 總,   㟇p.
{
   char *p="hello world!";
   print(p);
   return 0;
  }
 //print. clude "stdio.h"
  print(char *s)
  {
   printf("The string is %s/n",s);
  }
  如果把「extern」去掉,程式還是可以正常運作。
  
  由此可見,「extern」在函數宣告中可有可無,只是用來標誌該函數在本文件中定義,還是在別的文件中定義。只要你函數在使用之前就聲明了,那麼就可以不用包含頭檔了。
  
    VC++6.0中常出現的"unexpected end of file while looking for precompiled header directive"的問題?

    如何解決:"fatal error C1010:VC++6.0中常出現的"unexpected end of file while looking for precompiled header directive"的問題?

    如何解決呢?
 2、一定是你在類別的部分定義被刪除了,M$在每個類別中定義一些特殊的常數,是成對的,如下: 

 .h: 

 #if #define AFX_CHILDFRM_H__54CA89DD_BA94_11D4_94D7_0010B503C2EA__INCLUDED_ 

 ....... 

 //{{AFX_INSERT_LOCATION}} ....... 

 //{{AFX_INSERT_LOCATION}} ....... 

 //{{AFX_INSERT_LOCATION}} ....... 
 //{{AFX_INSERT_LOCATION}} ..

 #endif // !defined(AFX_MAINFRM_H__54CA89DB_BA94_11D4_94D7_0010B503C2EA__INCLUDED_) 



 一個類,然後把這些拷貝過去或補上就可以了。 。 [Not Using Precomplied Headers]
 (4). [OK]


 如果以上不能解決問題,那麼就請看以下內容.引起這樣的錯誤,有可能你只是增加了一個.H和.CPP的文件.這時你就要按上面所說.
名含"stdafx .h"即可.如果還要在多個文件裡同時使用結構類型,你就要繼續向下看了.一定會有不少收穫的.

 類型的定義和類型變量的定義不同, 
 類型定義只是描述一個型, 
 是給編譯器看的, 
 不會產生執行碼。 
 變數定義是指在執行檔中真實得存在這麼一塊內容。

 因為每個.c裡都要寫清楚類型定義很麻煩, 
 所以一般都把類型定義寫在.h裡 
 ,而在.c裡採用簡單的寫法,如struct A a; 
 這樣定義變量, 
 不需要把整個類型的描述再寫一遍。

 ------------------------------------------------ ------------------------ 
 所以,struct類型定義放到 XX.h裡面, 
 XX.cpp 裡加struct str st_r; 
 XXXXX.cpp加上#i nclude "XX.h" 
 然後直接使用extern struct str st_r;



更多extern使用方法總結相關文章請關注PHP中文網!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。