static char buf[8];
void foo(){
const char* ptr = buf;
/* ... */
char* q = (char*)ptr;
}
上記のスニペットはを生成し"warning: cast discards ‘__attribute__((const))’ qualifier from pointer target type [-Wcast-qual]"
ます。-Wcast-qual
書くべきではないメモリに誤って書き込むのを防ぐことができるので、私は好きです。
しかし、今度は、constを1回だけ(ファイルまたはプロジェクト全体ではなく)キャストします。それが指しているメモリは書き込み可能です(buf
上記のように)。ptr
constは他の場所で使用されており、ポインター(1つのconstと1つのnon-const)を保持することは、より悪い考えのように思われるため、私はconstを削除したくありません。