假设我必须使用C(没有C++或面向对象的编译器)并且我没有动态内存分配,我可以使用哪些技术来实现类,或者类的良好近似?将"类"隔离到单独的文件中总是一个好主意吗?假设我们可以通过假定固定数量的实例来预分配内存,或者甚至在编译时将每个对象的引用定义为常量.随意假设我将需要实施哪个OOP概念(它会有所不同)并为每个概念提出最佳方法.
限制:
我的项目中有许多类型的结构,另一个结构包含指向这些结构之一的指针。如,
struct one{int num = 1;};
struct two{int num = 2;};
struct three{int num = 3;};
// These structs hold many other values as well, but the first value is always `int num`.
Run Code Online (Sandbox Code Playgroud)
我还有另一个结构,其中包含对这些结构的引用。我不得不使用,void*因为我不知道将要引用这些结构中的哪个。
struct Holder{void* any_struct};
Run Code Online (Sandbox Code Playgroud)
我的问题是,我需要这些结构中的值,但是我有一个void指针,能否将第一个变量声明为一个基本结构,将其int强制转换,然后使用它num从这些结构中提取变量,例如:
struct Base{int num};
((Base*) Holder->any_struct)->num
// Gives 1, 2 or 3
Run Code Online (Sandbox Code Playgroud) 想象一下,我有以下结构
struct Memory {
int type;
int prot;
};
typedef struct Memory *Memory;
Run Code Online (Sandbox Code Playgroud)
我将如何使用malloc()初始化它?
Memory mem = malloc(sizeof(Memory));
Run Code Online (Sandbox Code Playgroud)
要么
Memory mem = malloc(sizeof(struct Memory));
Run Code Online (Sandbox Code Playgroud)
分配它的正确方法是什么?
在我的项目中,一个structre正在几个函数中使用.
像这样:
void function1 (Struct_type1 * pstType1);
Run Code Online (Sandbox Code Playgroud)
但是当我搜索Struct_type1引用时,我找不到任何引用.必须在某处定义此结构.如何找到定义?
OS-Windows
编辑:我认为没有源代码很难回答这个问题,我不能在这里分享这个大项目.所以,我把我的问题改为:
(通过隐藏我的意思是没有人能看到定义.)