C 學習筆記1 extern關鍵字詳解

2021-08-28 03:55:32 字數 705 閱讀 9968

extern 「c」

在c++環境下使用c函式的時候,常常會出現編譯器無法找到obj模組中的c函式定義,從而導致鏈結失敗的情況,應該如何解決這種情況呢?

c++語言在編譯的時候為了解決函式的多型問題,會將函式名和引數聯合起來生成乙個中間的函式名稱,而c語言則不會,因此會造成鏈結時找不到對應函式的情況,此時c函式就需要用extern 「c」進行鏈結指定,這告訴編譯器,請保持我的名稱,不要給我生成用於鏈結的中間函式名。

下面是乙個標準的寫法:

//在.h檔案的頭上

#ifdef __cplusplus

#if __cplusplus

extern "c"

#endif

#endif /* __cplusplus */

多個檔案聯合程式設計

1、在檔案中函式都是全域性函式

2、 vi 編譯格式:gcc -o 可執行程式 檔案1.c檔案2.c 標頭檔案.h

3、 標頭檔案只包含一次

方式一:

#pragma once

、、、這裡寫具體code

方式二: 

#ifndef st_log_h

#define st_log_h

、、、這裡寫具體code

#endif st_log_h

學習筆記 關鍵字static 和 extern

static 主要修飾變數和修飾函式 靜態變數 儲存在靜態區 全域性區 靜態區域性變數 靜態區域性變數屬於靜態儲存方式,它具有以下特點 1 靜態區域性變數在函式內定義 它的生存期為整個源程式,但是其作用域仍與自動變數相同,只能在定義該變數的函式內使用該變數。退出該函式後,儘管該變數還繼續存在,但不能...

C 之關鍵字extern

最近看了許多關於extern關鍵字的文章,有一些心得體會,本篇博文綜合了許多文章的內容,不正確的地方還希望大家能夠給予指正!其中先指明乙個誤區 許多人認為標頭檔案只能包含宣告,這其實是不對的!一 首先,讓我們來了解宣告和定義的基本概念。1.1.宣告的概念 大概來講宣告主要是為了支援模組 編譯單元 c...

C 的extern關鍵字

extern是乙個宣告,不是乙個定義,a模組想應用b模組的乙個函式或者變數,a模組包含b模組的標頭檔案,並且在變數或者標頭檔案前,加 extern,雖然編譯的時候,找不到模組的定義,但是在連線的時候,會在b模組生成的 中,找到函式或者變數。1 外部用的時候,不能乙個定義陣列,乙個定義指標這種 2 變...