乙個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 中非類的成員函式,可以簡單的在函式宣告前...