将 C++ 类转换为 C 结构(及其他) [英] Converting a C++ class to a C struct (and beyond)

查看:27
本文介绍了将 C++ 类转换为 C 结构(及其他)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

过去几天我一直在降级"> 1000 文件的 C++ 代码到 C.到目前为止一直进展顺利.突然就和一个班级面对面了...

Past few days I have been "downgrading" > 1000 filem of C++ code into C. It's been going well until now. Suddenly I'm face to face with a class...

编译器首先在头文件中指出错误:

The compiler pointed out the error first in the header file:

class foobar {
    foo mutex;
public:
    foobar() {
        oneCreate(&mutex, NULL);
    }
    ~foobar() {
        oneDestroy(mutex);
        mutex = NULL;
    }
    void ObtainControl() {
        oneAcquire(mutex);
    }
    void ReleaseControl() {
        oneRelease(mutex);
    }
};

当然,C文件也要利用这一点

And of course, the C file has to take advantage of this

foobar fooey;
fooey.ObtainControl();

我什至不知道从哪里开始......帮助?

I don't even know where to start.... Help?

推荐答案

将 foobar 变成普通结构体

Turn foobar into a normal struct

struct foobar {
    goo mutex;
};

创建您自己的构造函数"和析构函数"作为您对该结构调用的函数

Create your own "constructor" and "destructor" as functions that you call on that struct

void InitFoobar(foobar* foo)
{
   oneCreate(&foo->mutex);
}

void FreeFoobar(foobar* foo)
{
   oneDestroy(foo->mutex);
}

struct foobar fooStruct;
InitFoobar(&fooStruct);
// ..
FreeFoobar(&fooStruct);

这篇关于将 C++ 类转换为 C 结构(及其他)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆