来自 signal.h 的信号宏是类对象宏还是类函数宏?
Are signal macros from signal.h object-like or function-like macros?
在 C 的 signal.h
头文件中定义了一堆宏(例如 SIGCONT
、SIGKILL
)。
这些是类对象宏还是类函数宏?如何判断?
免责声明:对 C 编程非常陌生。
SIGCONT
和 SIGKILL
是类对象宏。
在定义和使用后带有括号参数的宏,例如:
#define max(a, b) ((a) < (b) ? (b) : (a))
是类似函数的宏,仅仅是因为它们像函数一样使用参数。在没有括号参数的情况下定义和使用的宏,例如:
#define c 299792458. // Speed of light / (m/s).
是类对象宏,因为它们更像是普通变量(在 C 标准的术语中指定 对象)。
在 C 的 signal.h
头文件中定义了一堆宏(例如 SIGCONT
、SIGKILL
)。
这些是类对象宏还是类函数宏?如何判断?
免责声明:对 C 编程非常陌生。
SIGCONT
和 SIGKILL
是类对象宏。
在定义和使用后带有括号参数的宏,例如:
#define max(a, b) ((a) < (b) ? (b) : (a))
是类似函数的宏,仅仅是因为它们像函数一样使用参数。在没有括号参数的情况下定义和使用的宏,例如:
#define c 299792458. // Speed of light / (m/s).
是类对象宏,因为它们更像是普通变量(在 C 标准的术语中指定 对象)。