C DEFINE_MUTEX是函数还是宏?

C DEFINE_MUTEX是函数还是宏?,c,linux-device-driver,udev,C,Linux Device Driver,Udev,我试图掌握C语言和模块开发, (遵循上的优秀示例) 现在,什么是定义互斥?函数?宏 DEFINE_MUTEX(parrot_device_mutex); 如果是函数,UC函数名的原则是什么 (如果有更多关于udev开发的指南,请提示。)这是一个宏 #define DEFINE_MUTEX(mutexname) struct mutex mutexname = __MUTEX_INITIALIZER(mutexname) 请参阅Linux/include/Linux/mutex.h,这是一个宏

我试图掌握C语言和模块开发, (遵循上的优秀示例)

现在,什么是定义互斥?函数?宏

DEFINE_MUTEX(parrot_device_mutex);
如果是函数,UC函数名的原则是什么

(如果有更多关于udev开发的指南,请提示。)

这是一个宏

#define DEFINE_MUTEX(mutexname) struct mutex mutexname = __MUTEX_INITIALIZER(mutexname)
请参阅Linux/include/Linux/mutex.h,这是一个宏

#define DEFINE_MUTEX(mutexname) struct mutex mutexname = __MUTEX_INITIALIZER(mutexname)

请参考Linux/include/Linux/mutex.h

大致回答了这个问题(第一次点击谷歌搜索)。回答这个问题的更好方法是先查看相关的头文件,然后查找
定义互斥体。那里经常有解释其目的的文件。这只是从头文件定义的任何宏或函数或任何符号的一般建议。是的,所有大写字母通常用于宏和/或编译时常量,但这只是一种流行的约定,而不是rule@dvnrrs,谢谢,但您要引用的页面上同时显示“定义为预处理器宏”和“定义为函数原型…”。如何从noob的角度来理解它呢?LXR使用了错误的术语(它应该“声明为函数原型”而不是“定义”),并且它的解析启发式是错误的(因为它实际上根本不是一个函数)。它在
mutex.h
中以宏的形式显示它。所有其他列表都是
.c
文件。无论如何,我的观点是这种东西很容易搜索(不仅仅是在LXR上)。基本上回答了这个问题(第一次点击谷歌搜索)。回答这个问题的更好方法是首先查看相关的头文件并查找
DEFINE\u MUTEX
。那里经常有解释其目的的文件。这只是从头文件定义的任何宏或函数或任何符号的一般建议。是的,所有大写字母通常用于宏和/或编译时常量,但这只是一种流行的约定,而不是rule@dvnrrs,谢谢,但您要引用的页面上同时显示“定义为预处理器宏”和“定义为函数原型…”。如何从noob的角度来理解它呢?LXR使用了错误的术语(它应该“声明为函数原型”而不是“定义”),并且它的解析启发式是错误的(因为它实际上根本不是一个函数)。它在
mutex.h
中以宏的形式显示它。所有其他列表都是
.c
文件。无论如何,我的观点是这种东西很容易搜索(不仅仅是在LXR上)。