如何将结构从 c++ 传递到 c 中的函数?

How to pass struct from c++ to function in c?

本文关键字:函数 结构 c++      更新时间:2023-10-16

我有一个C++文件,如下所示:

int myNum[10] = {10, 20, 20, 40, 50, 60, 70, 80, 90, 100};
struct rfid
{
int AntennaID;
char *tid;
};
for (int i = 0; i < 10; i++) {
AntennaID = myNum[i];
struct rfid p1 = {AntennaID, tid};
cout << "roll no : " << p1.AntennaID << endl;
cout << "roll no : " << p1.tid << endl; 
passInfo(*p1);
}

我有一个C文件,如下所示:

#include <stdio.h>
void passInfo(*p1)
{
printf("%s :: n", *p1);
}

如何将C++框架的结构传递给 C 的函数?

  1. 创建一个将同时针对 C 和 C++ 编译的标头。
// shared.h
typedef struct rfid_
{
int AntennaID;
char *tid;
} rfid;
#if defined __cplusplus
extern "C"
#endif
void passInfo(rfid *p1);
  1. 用 C 语言实现你的函数。
// c.c
#include <stdio.h>
#include "shared.h"
void passInfo(rfid *p1) 
{
// whatever you want
}
  1. 通过包含标头在C++中使用您的函数。
// cpp.cpp
#include <iostream>
#include "shared.h"
int test()
{
int myNum[10] = {10, 20, 20, 40, 50, 60, 70, 80, 90, 100};
for (int i = 0; i < 10; i++) {
AntennaID = myNum[i];
rfid p1 = {AntennaID, tid};
cout << "roll no : " << p1.AntennaID << endl;
cout << "roll no : " << p1.tid << endl;
passInfo(&p1);
}
}