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 變...