相关疑难解决方法(0)

你如何在C中实现一个类?

假设我必须使用C(没有C++或面向对象的编译器)并且我没有动态内存分配,我可以使用哪些技术来实现类,或者类的良好近似?将"类"隔离到单独的文件中总是一个好主意吗?假设我们可以通过假定固定数量的实例来预分配内存,或者甚至在编译时将每个对象的引用定义为常量.随意假设我将需要实施哪个OOP概念(它会有所不同)并为每个概念提出最佳方法.

限制:

  • 我必须使用C而不是OOP,因为我正在编写嵌入式系统的代码,编译器和预先存在的代码库位于C语言中.
  • 没有动态内存分配,因为我们没有足够的内存来合理地假设如果我们开始动态分配它就不会用完.
  • 我们使用的编译器没有函数指针的问题

c oop embedded class

131
推荐指数
6
解决办法
14万
查看次数

使用基本结构从void *提取值

我的项目中有许多类型的结构,另一个结构包含指向这些结构之一的指针。如,

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)

c struct

5
推荐指数
1
解决办法
108
查看次数

使用sizeof对malloc struct指针的正确方法是什么?

想象一下,我有以下结构

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)

分配它的正确方法是什么?

c

0
推荐指数
1
解决办法
654
查看次数

隐藏声明是否可以在项目中使用?

在我的项目中,一个structre正在几个函数中使用.

像这样:

void function1 (Struct_type1 * pstType1);
Run Code Online (Sandbox Code Playgroud)

但是当我搜索Struct_type1引用时,我找不到任何引用.必须在某处定义此结构.如何找到定义?

OS-Windows

编辑:我认为没有源代码很难回答这个问题,我不能在这里分享这个大项目.所以,我把我的问题改为:

  • 嵌入式项目中是否可以隐藏声明?

(通过隐藏我的意思是没有人能看到定义.)

c embedded source-insight

0
推荐指数
2
解决办法
124
查看次数

标签 统计

c ×4

embedded ×2

class ×1

oop ×1

source-insight ×1

struct ×1