我想在C++代碼中使用C源代碼的函數。當我嘗試在C頭中聲明的C++代碼結構中實例化,然後通過值將其傳遞給C函數時,我遇到了一些困難。例如:在C++代碼中使用C定義的結構
dummyc.h:
#ifndef _DUMMY_C_H_
#define _DUMMY_C_H_
typedef struct {
int a;
int b;
int c;
int d;
}DUMMYS;
int dummyFunction(unsigned int a, unsigned int b, unsigned short c, DUMMYS dummy);
#endif
dummyc.c:
#include "dummyc.h"
int dummyFunction(unsigned int a, unsigned int b, unsigned short c, DUMMYS dummy){
return 1;
}
dummycpp.cpp:
extern "C"{
#include "dummyc.h"
}
int main(){
DUMMYS s = {0,0,0,0};
return dummyFunction(50,50,1,s);
}
在dummyFunction執行我看到,堆棧數據是不正確。看起來他們在哪裏轉移?我怎樣才能正確做到這一點?我使用GCC 4.3.4 for ARM。
您能打印出控制檯中的結果來確認您的意思嗎?在我的結尾,一切都看起來很正確 –
對於你顯示的示例代碼,唯一「壞」的是你使用了一個帶下劃線的前導符號後跟一個大寫字母(頭部包括後衛)的符號。 [這些符號保留](http://stackoverflow.com/a/228797/440558)。除此之外,只要您使用針對相同ABI的編譯器編譯源文件,我就會發現沒有任何問題。 –
另外,你能解釋你如何「看到堆棧上的數據不正確」? –