tft每日頭條

 > 科技

 > c語言的簡單方法

c語言的簡單方法

科技 更新时间:2025-01-08 04:16:56

很多初學的小萌新,第一反應很有可能是:直接調用就完事了!這樣說也沒錯,因為C 本來就包含了C。比如在C文件中存在一個函數func_c(), 該文件與C 的工程混編在一起時,可以直接在C 中調用C文件中的func_c();不需要做任何額外處理。

c語言的簡單方法(CC編程筆記)1

不過在C中,不可以調用C 的接口,也不能直接調用C語言的一些API,否則編譯會出錯。這個時候呢,就需要我們今天的主角:extern "C"了!

為什麼要是用它extern "C"

在進行C 開發的時候,由于C、C 編譯規則是不同的。C 編譯函數方法是使用mangle的技術

c語言的簡單方法(CC編程筆記)2

而在C語言中是沒有這個技術的,所以如果我們想要調用C語言開發的一些API,就需要使用 extern "C"修飾C語言的函數聲明。

extern "C"用法

(1)直接在函數前面加上 extern "C" 關鍵字

extern "C" void fun() {

printf("test");

}

(2)如果有函數聲明與函數實現,要讓函數聲明被 extern "C" 修飾,函數實現可以不修飾

extern "C" void func();

void func() {

cout << "func()" << endl;

}

(3)如果有多個函數要被extern "C" 修飾,可以直接用{}包裹

extern "C" {

void func();

void func1();

}

void func() {

cout << "func()" << endl;

}

void func1() {

cout << "func1()" << endl;

}

自定義C語言函數庫

但是我們每次使用C語言的API都用這個extern "C"修飾那是不是太麻煩了,那我們學會了怎麼去使用extern "C",我們可以在編寫C語言API庫的時候,直接使用這個來修飾,那麼C 再去調用的時候就不用這麼麻煩了,直接使用這個函數就可以了。

c語言的簡單方法(CC編程筆記)3

但是這麼定義的話就會産生另一個問題,那麼就是無法在C語言文件中調用這個庫

因為在C語言中是沒有extern "C"這個關鍵字的。調用這個庫,就是直接把這個庫的文件代碼拷貝過來。例如:

c語言的簡單方法(CC編程筆記)4

那麼我們就需要在定義這個sum庫的時候加上一些約束規則,讓它在被C 調用的時候加上 extern "C" 關鍵字,在被C語言調用的時候去掉這個關鍵字。

c語言的簡單方法(CC編程筆記)5

__cplusplus這個宏是C 中特有的。它在加載C 文件的時候會提前定義這個宏,所以我們隻要判斷文件中是否有這個宏,有的話就是C 在調用,沒有的話就是C語言,這樣就可以很好地解決了這個混合調用的問題。

希望對你有幫助!


自學C/C 編程難度很大,不妨和一些志同道合的小夥伴一起學習成長!

C語言C 編程學習交流圈子,關注 私信【C/C 編程】C語言編程學習基地

有一些源碼和資料分享,歡迎轉行也學習編程的夥伴,和大家一起交流成長會比自己琢磨更快哦!

c語言的簡單方法(CC編程筆記)6

c語言的簡單方法(CC編程筆記)7

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved