我有一个函数,它接受一个指针,但不修改指向的数据,但返回相同的指针或其派生的指针.我可以将指针设置为const
:
const void *some_read_only_operation(const void *ptr) {
// Do work with ptr
return ptr;
}
然而,这意味着如果我调用该函数,我将无法在没有强制转换的情况下操作结果,即使我传递的指针不是const
.相反,如果我将函数中的指针和返回类型设为非const
,那么我将需要强制转换来传递指向函数const
的任何指针.我会拿回一个非const
分的球,所以我已经打破了const
分的安全.
有没有办法在不编写两个单独的函数的情况下,用C语言创建一个表示const
正确的函数(const
in表示const
out,非const
in表示非const
out)?如果不是,我能走多近?
这似乎是以前很可能被问到的那种问题.我试着用const function return或qualifier preserving function这样的关键词搜索重复的内容,但我什么也找不到.