我有一个给出定义的头文件
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/