C和C 混合程式設計

2021-10-09 22:44:59 字數 1470 閱讀 2071

乙個c語言檔案p.c

#include

void

print

(int a,

int b)

乙個標頭檔案p.h

#ifndef _p_h

#define _p_h

void

print

(int a,

int b)

;#endif

c++檔案呼叫c函式

#include

using namespace std;

#include

"p.h"

intmain()

執行命令

gcc -c p.c

g++ -o main main.cpp p.o

原因分析 總結

修改p.**件

#ifndef _p_h

#define _p_h

extern

"c"#endif

修改後再次執行命令

gcc -c p.c

g++ -o main main.cpp p.o

./main

執行無報錯

實驗:定義main,c函式如下

#include

#include

"p.h"

intmain()

重新執行命令如下

gcc -c p.c

gcc -o mian main.c p.o

報錯:c語言裡面沒有extern 「c「這種寫法

為了使得p.c**既能被c++呼叫又能被c呼叫

將p.h修改如下

#ifndef _p_h

#define _p_h

#ifdef __cplusplus

#if __cplusplus

extern

"c"#endif

#endif

/* __cplusplus */

#endif

/* __p_h */

再次執行命令

gcc -c p.c

gcc -o mian main.c p.o

./mian

結果示意:

C 和C 混合程式設計

由於歷史原因,很多時候我們的 並不完全是使用.net寫成的。這時候和以往c 的混合程式設計就顯得相當重要了。最近碰到了這樣的問題,將方法簡要記述如下。要在c 中呼叫c 函式,大體的思路是這樣的 首先將c 函式寫成dll形式的庫,然後在c 中匯入dll中的函式進行呼叫。具體的 類似這樣 c 1int ...

C 和C 混合程式設計

由於歷史原因,很多時候我們的 並不完全是使用.net寫成的。這時候和以往c 的混合程式設計就顯得相當重要了。最近碰到了這樣的問題,將方法簡要記述如下。要在c 中呼叫c 函式,大體的思路是這樣的 首先將c 函式寫成dll形式的庫,然後在c 中匯入dll中的函式進行呼叫。具體的 類似這樣 c 1 int...

C和C 混合程式設計

1 pragma once 關於 pragma once vc 及g 都支援,大膽的用吧。匯出型別必須一致.要麼是c的,要麼是c 2.cplusplus 這個是必須的 ifdef cplusplus extern c endif c 中呼叫c的 1 對於 c 中非類的成員函式,可以簡單的在函式宣告前...