我有一个函数,它接受指针但不修改指向的数据,但返回相同的指针或其派生。我可以做指针const
:
const void *some_read_only_operation(const void *ptr) {
// Do work with ptr
return ptr;
}
但是,这意味着如果我调用该函数,即使我传递的指针不是 ,我也将无法在不进行强制转换的情况下操纵结果const
。相反,如果我在函数中设置指针和返回类型为 non ,const
那么我将需要进行强制转换以将任何指针传递给函数const
。我会得到一个非const
指针,所以我破坏了const
安全性。
有没有什么方法可以在 C 中创建一个尊重const
正确性的函数(const
in 表示const
out,non const
in 表示 non const
out),而不必编写 2 个单独的函数?如果没有,我能接近多远?
注意:这似乎是以前可能被问过的问题类型。我尝试使用const function return或限定符保留函数等关键字搜索重复项,但找不到任何重复项。
您可以
_Generic
为此使用:您可以返回偏移量而不是指针:
char
如果适合您的应用,您可以使用偏移量以外的单位。