相同函数的 C const/非常量版本

发布于 2024-09-11 10:09:04 字数 247 浏览 4 评论 0原文

假设 CI 中的函数

type* func (type*);
const type* func_const (const type*);

具有完全相同的内部逻辑。

有没有一种方法可以将两者合并为一个函数,如果给定一个 const 类型,它会返回一个 const 类型;如果给定一个非常量类型,它会返回一个非常量类型?如果没有,处理这个问题的好方法是什么?也许可以通过显式转换根据另一个来定义一个?

Suppose in C I have the functions

type* func (type*);
const type* func_const (const type*);

such that they both have the exact same internal logic.

Is there a way I can merge the two into one function, where if given a const type, it returns a const type; and if given a non-const type, it returns a non-const type? If not, what is a good way of dealing with this? Define one in terms of the other via explicit casting perhaps?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可遇━不可求 2024-09-18 10:09:04

您无法使其自动化,但您当然可以将逻辑放在一个位置:

const type* func_const (const type*)
{
    /* actual implementation goes here */
}

type* func (type* param)
{
    /* just call the const function where the "meat" is */
    return (type*)func_const(param);
}

You can't automate it, but you can certainly have the logic in a single location:

const type* func_const (const type*)
{
    /* actual implementation goes here */
}

type* func (type* param)
{
    /* just call the const function where the "meat" is */
    return (type*)func_const(param);
}
佼人 2024-09-18 10:09:04

像标准 C 库函数一样,只接受 const 限定的参数,同时返回非 const 限定的结果。 (参见strchrstrstr等)这是最实用的。

Do like the standard C library functions do and just take a const-qualified argument while returning a non-const-qualified result. (See strchr, strstr, etc.) It's the most practical.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文