在C代码中使用C定义的结构
发布时间:2020-12-16 07:18:07 所属栏目:百科 来源:网络整理
导读:我正在尝试在我的C代码中使用C源代码.当我尝试在C-header中声明的C代码结构中实例化然后通过值将其传递给C函数时,我遇到了一些困难.例: dummyc.h: #ifndef _DUMMY_C_H_#define _DUMMY_C_H_typedef struct { int a; int b; int c; int d;}DUMMYS;int dummyF
我正在尝试在我的C代码中使用C源代码.当我尝试在C-header中声明的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,DUMMYS dummy){ return 1; } dummycpp.cpp: extern "C"{ #include "dummyc.h" } int main(){ DUMMYS s = {0,0}; return dummyFunction(50,50,1,s); } 在dummyFunction执行期间,我看到堆栈上的数据不正确.好像他们在哪里转移?我怎么能正确地做到这一点???我使用GCC 4.3.4 for ARM. 解决方法
‘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,DUMMYS dummy); #ifdef __cplusplus } #endif #endif C和C如何将成员置于结构中(当结构完全由C和C中合法的事物组成时)没有区别. 在dummyc.h中进行此更改时,可以删除dummycpp.cpp中#include指令周围的“extern”C“’. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |