首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__DARWIN_NULL宏定义在哪里?

__DARWIN_NULL宏定义在哪里?
EN

Stack Overflow用户
提问于 2015-07-23 18:40:44
回答 1查看 1.2K关注 0票数 1

我必须在函数中返回nul,但不允许包含任何库。我试图在how is NULL定义中查找,然后查找sys/_type/_null.h,结果发现NULL实际上是__DARWIN_NULL。太棒了!现在,我不知道在哪里搜索以找到__DARWIN_NULL定义.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-14 07:01:12

我必须在函数中返回nul,但不允许包含任何库。

这个问题的解决方案比您要做的要简单得多;您实际上已经问过一种形式的XY problem

您将找不到在任何标准库中定义的NUL字符;使用常量'\0'0返回的最佳方法。

如果你的教授教你避免使用<stddef.h>来寻找NULL,那么他/她设置了一个愚蠢的练习,它涉及到使用工作中最合适的工具以外的其他东西,顺便说一句,这是一个由标准来保证存在的工具。我会把这作为一个关注的问题。

尽管如此,有时教授并不在意,而且会教你做蠢事。NULL被定义为实现定义的空指针常量,通常是00void *的转换,如:((void *) 0)。这可能不是您的NULL解析的实现定义的值;在这种情况下,调整以适应:)

您可以添加一个预处理定义(如#define NULL ((void *) 0) ),然后您就可以从您的函数中获得return NULL;。塔-达!愚蠢的练习应该得到愚蠢的解决方案。

如果你的教授说你也不被允许使用#define,我会很想问他你被允许使用什么。临时改变要求是不公平的。大多数编译器将允许您使用命令行参数(例如cc -DNULL='((void *) 0)' ... )设置预处理器常量。这对于公开编译时配置选项很有用,但同样地,使用它来定义NULL是愚蠢的。

你的标题中的问题与你的其他职位不同。__DARWIN_NULL也可以使用上述任何一种定义,前提是它还没有定义,但我真的不认为这是回答实际问题所必需的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31595570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档