antirez / antirez/sds

Improve const-correctness for read-only functions (e.g., sdslen, sdscmp)

未关闭
#154 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
C
星标
5.6k
派生
510
PR 合并指标
30 天内没有已合并 PR

描述

Functions that perform read-only operations, like `sdscmp`, are declared with `const sds` parameters. Due to `typedef char *sds;`, `const sds` resolves to `char * const` (a constant pointer to mutable data).
This signature incorrectly implies that the function might modify the content of the sds strings.
More importantly, it makes it impossible to pass a `const char *` (that is known to be a valid `sds` string) to these functions without a cast that discards the `const` qualifier, which fails compilation under `-Werror`.
To significantly improve const-correctness and interoperability with modern C/C++ codebases, I would like to propose introducing a new type for read-only sds strings:
``` c
typedef const char * const_sds;
```
With this new type, the signatures of read-only functions could be updated or overloaded. For example:
``` c
int sdscmp(const_sds s1, const_sds s2);
size_t sdslen(const_sds s);
```

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。