C 程式的C語言介面

2021-04-12 23:38:07 字數 1283 閱讀 5409

有時候我們得到乙個c++庫,但卻要在c語言中使用該庫中的函式,或者想編乙個在c語言下也容易使用的c++庫。

首先我們寫兩個檔案,分別是foo.cpp和main.c,

先看main.c

void

g(void

);int main()

只是簡單宣告了函式g(),再在main()中呼叫。

g() 在foo.cpp中定義

#include 

<

iostream

>

using namespace std;

class

foo ;

foo::foo(

int i) : i(i) {}

void

foo::print()

extern "c

" }

定義了乙個類foo,在g()中例項化了乙個foo,使用print()方法列印一些資訊。

我們所要作的就是在g()函式外加上extern "c" ,這樣c++編譯器在編譯g()的時候會以c語言的方式來生成g()的內部名,這樣聯結器才能在c語言目標**中找到g()的引用。

在gcc下編譯:

gcc -c main

. cg++

-c foo

. cppg++

main

.o foo.o

在msvc中編譯

cl foo

.cpp main.c

上面foo.cpp中的g()宣告和定義是在一塊兒的,其實只要在函式宣告上加上extern "c"就行了,所以我們可以把宣告提取到乙個標頭檔案foo.h中去。

foo.h

#ifndef foo_h

#define foo_h

#ifdef  __cplusplus

extern "c

" #endif

#endif 

/*foo_h */

foo.cpp

#include "foo.h"

#include 

<

iostream

>

using namespace std;

class

foo ;

foo::foo(

int i) : i(i) {}

void

foo::print()

void

g(void

) main.c

#include 

"foo.h"

int main()

SQLITE的C語言介面

近我正在linux平台寫乙個軟體,需要用到乙個簡單的資料庫。mysql做資料庫固然很好,但其資料是存放在伺服器的。我想要的基本功能也就是使用c程式建立乙個資料庫本地檔案,然後可以對這個資料庫檔案執行基本的sql操作.就像在windows平台基於vc6.0的dao資料庫程式設計一樣 建立乙個本地檔案....

MySQL的C語言介面大全

2011 05 29 21 59 mysql在 c api 中可用的函式 mysql affected rows 返回被最新的update,delete或insert查詢影響的行數。mysql close 關閉乙個伺服器連線。mysql connect 連線乙個mysql伺服器。該函式不推薦 使用m...

C語言 佇列的介面實現

1.佇列的概念 佇列 只允許在一端進行插入資料操作,在另一端進行刪除資料操作的特殊線性表,佇列具有先進先出 fifo first in first out 入佇列 進行插入操作的一端稱為隊尾出佇列 進行刪除操作的一端稱為隊頭。2.佇列的實現 佇列也可以陣列和鍊錶的結構實現,使用鍊錶的結構實現更優一些...