我必须在函数中返回nul,但不允许包含任何库。我试图在how is NULL定义中查找,然后查找sys/_type/_null.h,结果发现NULL实际上是__DARWIN_NULL。太棒了!现在,我不知道在哪里搜索以找到__DARWIN_NULL定义.
发布于 2015-09-14 07:01:12
我必须在函数中返回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也可以使用上述任何一种定义,前提是它还没有定义,但我真的不认为这是回答实际问题所必需的。
https://stackoverflow.com/questions/31595570
复制相似问题