gpt4 book ai didi

c - __DARWIN_NULL 宏定义在哪里?

转载 作者:太空宇宙 更新时间:2023-11-04 03:37:14 25 4
gpt4 key购买 nike

我必须在函数中返回 nul,但我不允许包含任何库。我试图找到NULL是如何定义的,然后到sys/_types/_null.h才发现NULL实际上是__DARWIN_NULL。伟大的 !现在,我不知道去哪里搜索才能找到 __DARWIN_NULL 定义...

最佳答案

I have to return nul in a function but I'm not allowed to include any library.

这个问题的解决方案比你自己做的要简单得多;你实际上问过 XY problem 的形式.

您不会在任何标准库中找到定义的 NUL 字符;最好的返回方式是使用常量 '\0'0 .

如果您的教授教您避免使用 <stddef.h>寻找NULL然后他/她设置了一个愚蠢的练习,其中涉及使用最适合工作的工具以外的东西,顺便说一句,标准保证存在的工具......我会提出这个问题。

尽管如此,有时教授并不在意,无论如何都会教你做傻事。 NULL被定义为一个实现定义的空指针常量,通常是00 的转换至 void *像这样:((void *) 0) .这可能不是您的 NULL 的实现定义值决心;在这种情况下,请调整以适应 :)

您可以添加预处理器定义,例如 #define NULL ((void *) 0)然后你就可以return NULL;从你的功能。哒哒!愚蠢的练习需要愚蠢的解决方案。

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


您标题中的问题与帖子的其余部分不同。 __DARWIN_NULL也可以使用上述任何一种来定义,前提是它尚未定义,但我真的认为这不是回答您的实际问题所必需的。

关于c - __DARWIN_NULL 宏定义在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31595570/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com