Как передать структуру из c ++ в функцию c? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть файл 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 Ответ

1 голос
/ 17 июня 2020
  1. Создайте заголовок, который будет компилироваться как для C, так и для C ++.
// shared.h
typedef struct rfid_
{
    int AntennaID;
    char *tid;
} rfid;

#if defined __cplusplus
extern "C"
#endif
void passInfo(rfid *p1);
Реализуйте свою функцию в C.
// c.c
#include <stdio.h>
#include "shared.h"

void passInfo(rfid *p1) 
{
    // whatever you want
}
Используйте свою функцию в 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);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...