相同函数的 C const/非常量版本
假设 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您无法使其自动化,但您当然可以将逻辑放在一个位置:
You can't automate it, but you can certainly have the logic in a single location:
像标准 C 库函数一样,只接受 const 限定的参数,同时返回非 const 限定的结果。 (参见
strchr
、strstr
等)这是最实用的。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.