c - 一个看似无用的宏参数的目的是什么(见下面的代码)

标签 c macros bsd

在BSD系统的头文件queue.h中,有如下宏

#define TAILQ_ENTRY(type, qual)\
struct {\
    qual type *tqe_next;        /* next element */\
    qual type *qual *tqe_prev;  /* address of previous next element */\
}

根据上面的定义,应该像这样使用它

struct foo {
    TAILQ_ENTRY(struct foo, ) my_list;
    //some data here
};

我的问题是:这里宏参数“qual”的目的是什么,它似乎在生成的代码中没有任何作用。

最佳答案

好吧,在的用法中,也许它未被使用,但可以像这样进行一次调用

struct foo {
TAILQ_ENTRY(struct foo, ) my_list;
TAILQ_ENTRY(struct foo, const) my_list_too;
//some data here
};

其中 const 是类型限定符。

类型限定符可以是constrestrictvolatile_Atomic

关于c - 一个看似无用的宏参数的目的是什么(见下面的代码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48578156/

相关文章:

visual-studio-code - 我可以使用 VS Code 批量编辑多个文件吗?

CS50 pset2,获取姓名首字母

c++ - 如何添加 gstreamer 插件?

c - Linux 中的 IS_ERR() 宏

c++ - 什么是 __pragma 以及 __pragma 和 #pragma 之间的区别是什么

sockets - BSD 套接字的文件描述符错误

linux - 带有 -i 选项的 sed 命令(就地编辑)在 Ubuntu 上运行良好,但在 Mac 上运行良好

c++ - 如何中止 'close' TCP 连接?

c - 在数组中存储整数和字符

c - 在c中将结构体添加到链表中