多個 C和 H檔案的相互呼叫以及變數的跨檔案使用

2021-09-02 07:50:26 字數 976 閱讀 4481

假如  有乙個標頭檔案 1.h 和原始檔1.c

還有乙個標頭檔案 2.h和原始檔2.c

函式的呼叫

假如 有乙個函式 在1.h 中宣告 void xuexi(void)

在1.c中實現:先包含 #include "1.h"

void xuexi(void)

函式的實現;

還有乙個函式 在2.h中宣告 void xuexi2(void)

在2.c中實現先包含 #include "2.h"

void xuexi2(void)

函式的實現;

如果我們要在1.c中呼叫2.c中的函式  void xuexi2(void),我們只需要#include "2.h",就可以了。                     例如: 在1.c中

#include "1.h"

#include "2.h"

xuexi();

xuexi2();  //2中的函式  

變數的呼叫

比如在2.c中定義乙個變數int a(注意:在.h中不能定義變數,只能在.c中定義變數),比如:

#include "2.h"

在2.c中定義

int a;

如果我們想在1.c中呼叫這個變數

那麼在1.c中需要extern int a;(如果不用2.c中的函式,可以不加#include"2.h")

在1.h中extern int a也可以,因為1.c中#include "1.h"了

最好的方法:我們可以在2.h中 extern int a;如果我們想在1.c中使用這個變數 int a,那麼我們只需要include"2.h"就可以了。

巨集定義的呼叫

假如在2.h中定義了幾個巨集定義:#define  a   1

#define  b   2

(注意:盡量在.h中定義巨集定義)

如果我們想在1.c中使用這幾個巨集,只需要在1.c中#include "2.h",就可以了。

C 和C的相互呼叫

在c專案中融合c 和c的 是實際工程中不可避免的,就如一般底層的驅動是用c寫的,而應用層一般會用c c 的編譯器能相容c語言的編譯器,但他優先以c 的方式編譯 extern關鍵字強制讓c 編譯器對 進行c方式編譯注意 cplusplus 是c 編譯器都內建的乙個巨集,可以用來判斷是不是c 編譯器,那...

C 和C的相互呼叫

在實際的工程中,c 和c的相互呼叫時不可避免的。但是有時候用c語言的編譯器編譯成的軟體包,在c 的程式中呼叫會出現錯誤。先看一下乙個例子 add.c include add.h int add int a,int b add.h int add int a,int b 將這兩個檔案用c語言編譯器編譯...

c和c 的相互呼叫

由於c和c 的函式符號生成的規則是不同的,符號解析 鏈結階段 的時候是不同的所以不能直接呼叫 可以在.cpp檔案中加上 extern c 如果想在.c檔案中使用.cpp檔案的函式,那麼在.cpp檔案中需要把整個函式的定義都放在extern c 中 如果我們需要寫乙個.c檔案需要呼叫.cpp檔案中的函...