使用C 代码中的C定义结构

Using C-defined structures in C++ code

本文关键字:定义 结构 代码 使用      更新时间:2023-10-16

我正在尝试在我的C 代码中使用C源功能。当我尝试在C 代码结构中实例化,该结构在C-Header中声明,然后按值将其传输到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);
}

在执行假函数期间,我看到堆栈上的数据不正确。似乎他们在哪里转移了?我如何正确执行此操作???我使用gcc 4.3.4用于臂。

'extern" c"指令实际上仅对函数声明很重要。这是因为C 具有函数过载。我一直使用" #ifdef __cplusplus"。

#ifndef _DUMMY_C_H_
#define _DUMMY_C_H_
typedef struct {
int a;
int b;
int c;
int d;
}DUMMYS;
#ifdef __cplusplus
extern "C" {
#endif
int dummyFunction(unsigned int a, unsigned int b, unsigned short c, DUMMYS dummy);
#ifdef __cplusplus
}
#endif
#endif

C和C 如何将成员放入结构没有区别(当结构完全由C和C 合法的事物组成时)。

当您在dummyc.h中进行此更改时,可以删除dummycpp.cpp中#include指令的" extern" c'。