New comment by sgn on void-packages repository https://github.com/void-linux/void-packages/issues/46959#issuecomment-1786419379 Comment: ``` The reason for the non-prototype declaration is explained in commit 37bb3cce4598c19288628e675eaf1cda6e96958f: omit declaration of basename wrongly interpreted as prototype in C++ the non-prototype declaration of basename in string.h is an ugly compromise to avoid breaking 2 types of broken software: 1. programs which assume basename is declared in string.h and thus would suffer from dangerous pointer-truncation if an implicit declaration were used. 2. programs which include string.h with _GNU_SOURCE defined but then declare their own prototype for basename using the incorrect GNU signature for the function (which would clash with a correct prototype). ``` So, we move `basename` to `#ifdef __cplusplus`?