Nelle nostre file di origine di solito abbiamo una stringa di versione del genere:evitare che gcc di rimuovere una variabile non utilizzata
static const char srcvers[] = "VERSION/foo.c/1.01/09.04.15";
Quando la stringa non è ottimizzato via, è molto utile in certi casi, come si può determinare la versione di ciascun file sorgente collegato a un eseguibile semplicemente chiamando strings a.out | grep VERSION
.
Purtroppo lo è ottimizzato via da gcc (utilizzando '-O'). Quindi la mia domanda è, c'è un modo semplice (un commutatore sarebbe fantastico) per fare in modo che gcc mantenga quella variabile (il suo nome è sempre lo stesso) senza disattivare altre ottimizzazioni.
Modifica
Quali sono, a mio parere, rende la questione diversa da that one, è che sto speravo di trovare una soluzione per la quale io non avrei dovuto toccare migliaia di file di origine.
Cosa ne pensi di aggiungere l'opzione '-v' su tutto il tuo binario che mostra questo var? –
Forse prova a ingannare 'gcc' nel pensare che la variabile sia usata (qualcosa come' strlen (srcvers); ')? –
Ho provato a renderlo 'volatile'? Dovrebbe funzionare: 'volatile static const char srcvers [] =" VERSION/foo.c/1.01/09.04.15 ";' –