当 int 实际上为空时返回 int 的原因是什么?

NK-*_*ell 2 c linux api void linux-kernel

我在 Linux 内核源代码中遇到了一些奇怪的(对我来说)代码。有xt_register_target()功能:

int xt_register_target(struct xt_target *target)
{
    u_int8_t af = target->family;

    mutex_lock(&xt[af].mutex);
    list_add(&target->list, &xt[af].target);
    mutex_unlock(&xt[af].mutex);
    return 0;
}
EXPORT_SYMBOL(xt_register_target);
Run Code Online (Sandbox Code Playgroud)

这是一个 API 函数。因此,它返回的值似乎必须有一些明显的(对于 API 用户)原因。但是这个函数没有可变性——它总是返回 0。所以基本上它是void.
这种API编码模式的原因是什么?这是最佳实践还是错误?

dbu*_*ush 9

深入研究 git 历史,似乎这个函数以前确实有失败条件,但这些条件后来在这个 commit中被删除了。

因此,保持函数的实现相同以防止更改调用函数是有意义的。