我试图通过在 Linux 内核中创建自己的信号量来解决生产者消费者问题。我在 sys.c 中通过创建一个结构来做到这一点:
struct my_sem
{
int value;
struct task_struct *pro[25];
};
现在,当我在我的程序中并尝试创建此信号量时:
my_sem mutex1;
我收到一条错误消息“my_sem 未声明”
我包含了 unistd.h 并使用 -i 选项在 gcc 中编译。我觉得我还缺少一些东西。
谢谢。
最佳答案
当你创建自己的结构并想要使用它时,你必须说:
struct my_sem mutex1;
为了使其看起来更好,请使用 typedef:
struct my_sem
{
int value;
struct task_struct *pro[25];
};
typedef struct my_sem my_sem;
第一个struct my_sem
是每次你想要创建一个my_sem类型的新变量时必须说的。第二个 my_sem
是您可以用来简化的。每次您说 my_sem
时,编译器都会使用 struct my_sem
。
现在是你的代码
my_sem mutex1;
有效。
关于在 Linux 内核中创建了我自己的数据类型。现在我该如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33200018/