CソースコードをC++コードで使用しようとしています。私は、C-ヘッダで宣言されたC++コード体系でインスタンス化しようとすると、いくつかの困難を抱えています。そしてそれを値でC-関数に転送します。例:私は、スタック上のデータが不正確であることがわかりdummyFunction実行中C++コードでのC定義構造の使用
extern "C"{
#include "dummyc.h"
}
int main(){
DUMMYS s = {0,0,0,0};
return dummyFunction(50,50,1,s);
}
:
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 。彼らはシフトされたように見えますか?どのように私はこれを正しく行うことができますか?私はARM用にGCC 4.3.4を使っています。
あなたが言っていることを確認するためにコンソールに結果を印刷してください。私の最後にはすべてが正しいように見えます。 –
表示されているコード例では、「悪い」という唯一の事は、先頭にアンダースコアがついているシンボルを使用し、続いて大文字(ヘッダーを含むガード)を使用することです。 [そのようなシンボルは予約されている](http://stackoverflow.com/a/228797/440558)。それ以外は、同じABIをターゲットとするコンパイラで両方のソースファイルをコンパイルする限り、間違いはありません。 –
また、スタック上のデータが正しくないことをどのように見ているか説明してください。 –