我必须在函数中返回nul,但我不允许包含任何库。我试图找到如何定义NULL,然后到sys / _types / _null.h只发现NULL实际上是__DARWIN_NULL。好极了!现在,我不知道在哪里搜索以找到__DARWIN_NULL定义...
答案 0 :(得分:1)
我必须在函数中返回nul,但我不允许包含任何库。
解决这个问题的方法比你制作它简单得多;你实际上已经问了XY problem的形式。
您将找不到任何标准库中定义的NUL字符;返回的最佳方式是使用常量'\0'
或0
。
如果您的教授教您不要使用<stddef.h>
查找NULL
,那么他/她已经设置了一个愚蠢的练习,其中包括使用除了最合适的工具之外的其他工具,这是一个工具顺便提一下,标准是否存在......我会提出这个问题。
尽管如此,有时候教授们并不关心,无论如何都会教你做蠢事。 NULL
被定义为实现定义的空指针常量,通常为0
或0
到void *
的转换,如下所示:((void *) 0)
。这可能不是您NULL
解析为的实现定义值;在这种情况下,调整以适应:)
您可以添加预处理器定义,例如#define NULL ((void *) 0)
,然后您就可以从您的函数中return NULL;
。当当!愚蠢的练习值得愚蠢的解决方案。
如果您的教授说您不允许使用#define
,我也很想问他 允许使用的内容。动态改变要求是不公平的。大多数编译器允许您使用命令行参数设置预处理器常量,例如cc -DNULL='((void *) 0) ...'
。这对于公开编译时配置选项很有用,但是再次使用它来定义NULL
是愚蠢的。
标题中的问题与帖子的其他部分不同。 __DARWIN_NULL
也可以使用上述任何一种来定义,只要它尚未定义,但我真的认为不需要回答你的实际问题。