我正在研究 Linux 2.4(为我的操作系统类(class)做硬件), 我想使用pthread来实现读写锁。 在 rw_lock.c 中我有:
#include <pthread.h>
#include <stdlib.h>
#include "rw_lock.h"
struct readers_writers_t
{
int prio;
int number_of_readers;
pthread_cond_t no_readers;
int number_of_writers;
int number_of_waiting_writers;
pthread_cond_t no_writers;
pthread_mutex_t lock;
};
[functions...]
在 rw_lock.h 中我有:
typedef struct readers_writers_t readers_writers;
在另一个 C 文件(链表的实现)中,我有:
#include "rw_lock.h"
struct LinkedList
{
ListNode* head;
ListNode* tail;
readers_writers rwLock;
};
(and more functions,includes etc').
我得到(一个)编译错误:
"rwLock has incomplete type".
我不知道为什么会出现此错误(或如何修复它......)。
感谢帮助,谢谢!
最佳答案
您需要将结构定义从源文件移动到头文件。
rw_lock.h 应该是:
#ifndef SOME_UNIQUE_STRING_MY_RW_LOCK_H
#define SOME_UNIQUE_STRING_MY_RW_LOCK_H
#include <pthread.h>
struct readers_writers_t
{
int prio;
int number_of_readers;
pthread_cond_t no_readers;
int number_of_writers;
int number_of_waiting_writers;
pthread_cond_t no_writers;
pthread_mutex_t lock;
};
typedef struct readers_writers_t readers_writers;
#endif
关于linux - 在 Linux 2.4 上使用 pthread - 出现 "incomplete type"编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6011528/