static char buf[8];
void foo(){
const char* ptr = buf;
/* ... */
char* q = (char*)ptr;
}
È possibile che questo frammento genererà "warning: cast discards ‘__attribute__((const))’ qualifier from pointer target type [-Wcast-qual]"
. Mi piace lo -Wcast-qual
poiché può aiutarmi a scrivere accidentalmente in memoria a cui non dovrei scrivere.esplicita Ignora le avvertenze da -Wcast-qual: del cast si disfa ‘__attribute __ ((const))’ qualificatore dal tipo di destinazione puntatore
Ma ora voglio escludere const per una singola occorrenza (non per l'intero file o progetto). La memoria a cui punta è scrivibile (proprio come buf
sopra). Preferisco non rilasciare const da ptr
poiché è usato altrove e mantenere i puntatori (uno const e uno non-const) sembra un'idea peggiore.
Perché non solo 'char * q = buf;'? –
Immagino che questo sia poco chiaro dallo snippet, eseguo l'aritmetica su ptr prima del cast. – ext
Potrebbe essere preferibile utilizzare un indice nel buff invece di manipolare i puntatori quindi e passare ad es. '& buff [i]' invece di un puntatore? –