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 一次(而不是整个文件或项目)。它指向的内存是可写的(就像buf
上面一样)。我宁愿不删除 const ,ptr
因为它在其他地方使用并且保持指针(一个 const 和一个非常量)似乎是一个更糟糕的主意。