gpt4 book ai didi

c - 在 C 中决定返回值的通用方法是什么?

转载 作者:IT王子 更新时间:2023-10-29 00:18:01 26 4
gpt4 key购买 nike

我的程序是用 C 为 Linux 编写的,并且有许多具有不同返回值模式的函数:

1) 一个或两个成功时返回n,失败时返回-1
2) 一些成功返回0,失败返回-1
3) 有些成功返回 1,失败返回 0(我通常拒绝使用 bool 类型)。
4) 指针在失败时返回 0(我通常拒绝使用 NULL)。

我对前三个感到困惑——返回指针的函数在失败时总是返回 0,这很简单。

第一个选项通常涉及返回长度可能仅为正数的函数。

第二个选项,通常涉及命令行处理功能,但我不确定它是否正确,也许更好的值是 EXIT_SUCCESS 和 EXIT_FAILURE?

第三个选项适用于在条件下方便且自然地调用的函数,我通常在这里模拟 bool 类型,使用 int 值 1 和 0。

尽管这一切看起来都合理合理,但我仍然发现有些地方不太清楚或不明显,比如创建函数时使用哪种样式,或者当我想使用它时使用哪种样式。

那么,在此处决定返回类型时,如何使我的方法更加清晰?

最佳答案

So how can I add clarity to my approach when deciding upon return types here?

为每种返回类型选择一个模式并坚持下去,否则你会把自己逼疯的。根据长期以来为该平台建立的惯例对您的模式进行建模:

  • 如果您正在进行大量系统调用,那么任何返回整数的函数都应在失败时返回 -1

  • 如果您不进行系统调用,您可以自由地遵循 C 控制结构的约定,即非零表示成功,零表示失败。 (我不知道你为什么不喜欢 bool。)

  • 如果一个函数返回一个指针,失败应该通过返回NULL来指示。

  • 如果函数返回 float ,则应通过返回 NaN 来指示失败。

  • 如果函数返回完整范围的有符号和无符号整数,您可能不应该在返回值中编码成功或失败。

返回值测试是 C 程序员的祸根。如果失败很少见并且您可以编写中央处理程序,请考虑使用 exception macro package可以使用 longjmp 指示失败。

关于c - 在 C 中决定返回值的通用方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2141856/

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