在 Linux 内核中创建了我自己的数据类型。现在我该如何使用它?

标签 c

我试图通过在 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/

相关文章:

c - macOS:找不到 -lpaho-mqtt3c 的库

c - 任何语义正确和句法正确的 C 程序都是算法吗?

arrays - 灵活数组成员使用无效错误

c - 替代终端的 Bison/Flex 打印值

c - 为什么指向结构的指针会使程序崩溃?

c++ - 使文件目标 $(%SYMBOLIC)

c++ - Flood_router6.c中的一些函数(BackTrack中的DoS程序)

C 程序 - 从多米诺骨牌数组中添加、删除和打印多米诺骨牌

通过luajit调用winhttp

c++ - 未使用的变量和函数的链接器错误