gpt4 book ai didi

c - 取消引用指针 C 时类型不完整

转载 作者:太空宇宙 更新时间:2023-11-04 01:19:02 25 4
gpt4 key购买 nike

我有一个给出定义的头文件

typedef struct dyn_array dyn_array_t

我有一个实现它的 .c 文件

struct dyn_array {
size_t size;
void* array;
};

在另一个 .c 文件中,我将这种类型的指针传递给函数。

bool first_come_first_serve(dyn_array_t* ready_queue){
size_t limit = ready_queue->size;
//...
}

我不知道我在这里做错了什么。

最佳答案

另一个 .c 文件没有看到 struct dyn_array 定义。它不理解像 size 这样的成员。


如果超过1个.c文件需要理解结构,将下面移动到.h文件

struct dyn_array {
size_t size;
void* array;
};

另一种方法是创建一个获取成员的函数,并将 dyn_array_t 的定义保留在 dyn_array.c 中。这是 information hiding - 一个好的设计目标。

// in dyn_array.h
typedef struct dyn_array dyn_array_t;
size_t get_size(const dyn_array_t* ready_queue);

// in different.c
#include <dyn_array.h>
bool first_come_first_serve(dyn_array_t* ready_queue){
size_t limit = get_size(ready_queue);
//...
}

// in dyn_array.c
#include <dyn_array.h>

struct dyn_array {
size_t size;
void* array;
};

size_t get_size(const dyn_array_t* ready_queue) {
return ready_queue->size;
}

关于c - 取消引用指针 C 时类型不完整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49020005/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com