簡體   English   中英

C:鏈接函數無需共享標頭或外部聲明即可工作

[英]C: Linking functions works without sharing headers or extern declaration

我目前正在一個相當大的舊代碼庫中“玩”,很不幸,它沒有固定的風格。 所以它只是讓它工作,但這也意味着它有很多可以被描述為意大利面條代碼。

我遇到了一些我不完全理解的東西。 編譯器來自 ARM/KEIL,用於嵌入式系統。

第一個文件:

fileA.c
// prototype
int GetSomething( int a );

// implementation
int GetSomething( int a) {
    DoSomething();
}

第二個文件:

fileB.c
// prototype
int GetSomething( int a )

void main ( void ) {
    GetSomething(10);
}

沒有標頭聲明 function GetSomething 但 function 仍然正確鏈接。 最初,在 GetSomething 的聲明中的第二個文件中有一個 extern 關鍵字,但不管有沒有它都會導致相同的二進制文件。 該代碼已經過測試並且可以工作。

我看過Stackoverflow Question但這似乎並沒有涵蓋我的情況,因為它似乎與 extern 關鍵字無關。

我希望有人可以向我解釋或告訴我發生了什么。 謝謝。

使用 header 文件和#include指令只是在不同位置使用程序中各個部分代碼的更有條理和更整潔的方式。

當您執行#include "header.h"之類的操作時, header.h的副本放入文件中。

所以當你寫

GetSomething( int a );

您實際上是在做#include通常會做的事情的替代品。

另一個重要細節是 function 原型默認具有extern存儲 class 說明符。

您應該記住的一件事是,在您的文件中手動聲明 function 原型可能會導致容易出錯且難以維護代碼。 所以最好使用 header 文件和#include指令。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM