Immaginate Ho questa funzione C (e il prototipo corrispondente in un file di intestazione)Comportamento non definito per escludere la costanza di un parametro di funzione?
void clearstring(const char *data) {
char *dst = (char *)data;
*dst = 0;
}
C'è comportamento non definito nel codice qui sopra, getto del const
via, o è solo una pratica di programmazione terribilmente male ?
Supponiamo che non vi siano oggetti const qualificati usati
char name[] = "pmg";
clearstring(name);
Se il cast non è UB, penso che dovrebbe essere :) – pmg
sicuramente hai il piede esattamente nel mirino del fucile! –
@ pmg: se il cast stesso fosse UB, non ci sarebbe molto il linguaggio che lo consentiva - è abbastanza facile per un compilatore rilevare che 'const' è stato aggiunto in un cast, allo stesso modo in cui rileva che' char * dst = data; 'è illegale. Ovviamente ci sono alcune cose inutili che lo standard consente per ragioni storiche, ma io sostengo che questo non è uno di loro :-) –