来自 signal.h 的信号宏是类对象宏还是类函数宏?

Are signal macros from signal.h object-like or function-like macros?

在 C 的 signal.h 头文件中定义了一堆宏(例如 SIGCONTSIGKILL)。

这些是类对象宏还是类函数宏?如何判断?

免责声明:对 C 编程非常陌生。

SIGCONTSIGKILL 是类对象宏。

在定义和使用后带有括号参数的宏,例如:

#define max(a, b) ((a) < (b) ? (b) : (a))

是类似函数的宏,仅仅是因为它们像函数一样使用参数。在没有括号参数的情况下定义和使用的宏,例如:

#define c 299792458. // Speed of light / (m/s).

是类对象宏,因为它们更像是普通变量(在 C 标准的术语中指定 对象)。