有没有办法强制编译器(特别是GCC)使类编译到面向对象的C?具体来说,我想要实现的是写这个:
class Foo {
public:
float x, y, z;
float bar();
int other();
...etc
};
Foo f;
float result = f.bar()
int obSize = sizeof(Foo);
Run Code Online (Sandbox Code Playgroud)
然而编译完全相同:
Struct Foo { float x, y, z; };
float Foo_bar(Foo *this);
Foo f;
float result = Foo_bar(&f);
int obSize = sizeof(Foo);
Run Code Online (Sandbox Code Playgroud)
我的动机是提高可读性,但不会对Foo的每个对象造成内存损失.我想通常obSize的类实现
obSize = sizeof(float)*3 + sizeof(void*)*number_of_class_methods
Run Code Online (Sandbox Code Playgroud)
主要是在内存受限微控制器中使用c ++类.但是,我想如果我把它用于工作,我也会将它用于网络序列化(当然在相同的端机上).