不同 c檔案的函式如何相互呼叫

2021-09-10 14:40:55 字數 864 閱讀 8537

main.c&function.c兩個檔案,無function.h

function.c中對待呼叫函式進行定義

在main.c中呼叫時在呼叫語句前+extern

main.c&function.h兩個檔案,無function.c

在function.h中定義

在main.c中包含function.h進行呼叫

main.c&function.c&function.h三個檔案

function.h中寫函式宣告(#ifndef #define #endif句式避免重複定義)

function.c中寫函式定義(包含function.h)

main.c中包含function.h進行呼叫

這樣做的好處:同乙個標頭檔案裡可以包含多個函式

變數:在function.c裡定義 

在function.h裡宣告(宣告不可以初始化)

不在標頭檔案裡定義是為了避免重複定義

.c/.**件實際上是一種為了方便編譯方便生成執行檔案的一種約定,實際上.h可以反過來包含.c

我們可以通過編譯過程理解.c/.h(以linux為例)

在預處理階段我們約定將所有.c檔案包含的.h從檔名替換回**段

替換後的每個.c檔案(.i)先轉化為彙編檔案(.s)再轉換成二進位制檔案(.o

最後多個.o鏈結成乙個.out

C和C 如何相互呼叫

為什麼不能直接呼叫 在編譯的時候c和c 生成符號的規則不同,所以直接呼叫會出現符號未定義的鏈結錯誤。示例1 下面演示相互呼叫介面錯誤示例 test.c int sum int a,int b main.cpp int sum int a,int b 在本檔案中宣告一下 int main 錯誤 1 e...

c 中建構函式的相互呼叫

在建構函式中呼叫另乙個建構函式如果一不注意就會有無限遞迴的危險,而且建構函式的引數的不同也決定了呼叫的不同,所以特意總結了一下哪些形式的呼叫時允許的 首先假設構造函式呼叫時引數都是外部的變數,而不是乙個常量。說明 推薦此法 int b 2 class test 在初始化列表呼叫test int a ...

C和C 相互呼叫

c和c 相互呼叫 2011 11 01 18 42 29 分類 c c 在專案中融合c和c 有時是不可避免的,在呼叫對方的功能函式的時候,或許會出現這樣那樣的問題。近來在主程式是c語言,而呼叫c 功能函式的時候,c 的 h標頭檔案都能找到,功能函式也都定義了,最重要的是,單獨編譯c 的時候完全沒有問...