C 呼叫C中編譯過的函式要加extern C

2022-05-05 03:48:12 字數 481 閱讀 6631

c++語言支援函式過載,c語言不支援函式過載。函式被c++編譯後在庫中的名字與c語言的不同。

假設某個c 函式的宣告如下:

void foo(int x, int y);

該函式被c 編譯器編譯後在庫中的名字為_foo,而c++編譯器則會產生像_foo_int_int之類的名字用來支援函式過載和型別安全連線。由於編譯後的名字不同,c++程式不能直接呼叫c 函式。c++提供了乙個c 連線交換指定符號extern「c」來解決這個問題。

例如:extern 「c」

或者寫成

extern 「c」

這就告訴c++編譯譯器,函式foo 是個c 連線,應該到庫中找名字_foo 而不是找

_foo_int_int。c++編譯器開發商已經對c 標準庫的標頭檔案作了extern「c」處理,所以

我們可以用#include 直接引用這些標頭檔案。 

詳見:c/c++:函式的編譯方式與呼叫約定以及extern 「c」的使用

python類中函式呼叫要加self

物件呼叫方法時,實際上是通過類呼叫的a muffedcalculator a.calc expr 實際上是這樣呼叫的 muffledcalculator.calc a,expr 這樣self 就是 a,python隱含地把a 傳進方法 替代了self,就成了繫結的方法,就可以執行了.否則就是非繫結方...

C 函式的引數型別中為什麼要加const

const 是用於對常量的修改,帶有const的引用可以稱之為常量引用。但是在函式中為什麼要新增這個呢,比如void fun string 和void fun const string 到底有什麼區別呢,本文就些問題進行簡單介紹。給定給以下兩個函式 void fun1 string s void f...

C中呼叫C 函式

將 c 函式宣告為 extern c 在你的 c 裡做這個宣告 然後呼叫它 在你的 c 或者 c 裡呼叫 例如 c code extern c void f int void f int i 然後,你可以這樣使用 f c code void f int void cc int i f i 當然,這招...