C语言 定义 NULL 和 NULL_POINTER 的正确方法



我所知,C 是这样定义NULL的:

#define NULL ( (void *) 0)

那么,我们应该如何定义NULL_POINTER呢?我在我的程序中对它进行了相同的定义,并且它有效,但我想这只是一个巧合:

#define NULL_POINTER ( (void *) 0)

如果有的话,逻辑定义是什么?

#define NULL ( (void *) 0)

#define NULL 0

都有效。如果需要为空指针实现自己的宏,则适用相同的规则。

C11(ISO/IEC 9899:201x) §6.3.2.3 指针 第 3 节

值为 0 的整数常量表达式,或转换为类型的此类表达式 void * ,称为空指针常量

只有在指针上下文中,NULL0 是等效的。 当需要另一种0时,不应使用NULL,即使它可能有效,因为这样做会发送错误的样式信息。(此外,ANSI允许((void *)0) NULL的定义,这在非指针上下文中根本不起作用。特别是,当需要 ASCII 空字符 (NUL) 时,不要使用 NULL。提供您自己的定义

#define NUL ''

NULL应仅用作指针常量。

相关内容

  • 没有找到相关文章

最新更新