antirez / antirez/sds

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

Offen
#154 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C
Sterne
5.6k
Forks
510
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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);
```

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.