示例例如:
messageStruct.hpp
class MessageStructure_t{
public:
struct MsgData_t {
float a;
int i;
}__attribute__((packed))msgdata_m;
};//classs end
我的项目Application.c中有一个文件。我需要在这里访问结构变量。 两者都不同,一个.hpp和另一个.c
我该怎么做?
希望得到你的关注。
答案 0 :(得分:3)
您可以在单独的标头msg_data.h中定义结构,然后将其包含在两个项目中。如果需要,您可能必须将MessageStructure_t指针设置为MsgData_t。
因此MsgData.h:
struct MsgData_t {
float a;
int i;
}__attribute__((packed));
messageStruct.hpp:
#include "MsgData.h"
class MessageStructure_t {
public:
MsgData_t msgdata_m;
}
Appliaction.c:
#include "MsgData.h"
//...
答案 1 :(得分:2)
当你想从C访问C ++类及其对象时,有一些众所周知的模式。谷歌为他们。
一个简单的方法是将它包装在一块OO C中:
typedef void* my_handle_t;
handle_t create(void); // returns address of new'ed object
void destroy(handle_t); // deletes object
MsgData_t* get_data(handle_t); // returns address of data in object
这就留下了如何从C中访问MsgData_t
的问题。我看到了三种可能性:
#ifndef __cplusplus
)以使C ++头可以被C解析器访问(hackish,但避免了#2的代码重复)答案 2 :(得分:1)
我认为最好的方法是创建一个extern“C”函数来访问结构。