Ecco l'offerta. Ho avuto due variabili globali identiche in due file .c diversi, non sono stati dichiarati come extern. Quindi ogni file .c dovrebbe aver visto la propria variabile, giusto?Due variabili con lo stesso nome e tipo, in due diversi file .c, compilare con gcc
Ma ho ottenuto un comportamento davvero strano, come se un file leggesse l'altra variabile di file (dopo averli collegati insieme). L'aggiunta del qualificatore "statico" a entrambe le definizioni di variabili sembrava risolvere questo problema.
Quindi quello che mi chiedo in realtà è che cosa è successo esattamente lì senza il qualificatore "statico"?
Vedi anche http://stackoverflow.com/questions/1490693/tentativi-definizioni-in-c99-e-linking per aspetti difficili del collegamento est. –
@Pascal La tua risposta è in realtà la più completa, peccato non posso contrassegnarla come accettata. Ho pensato a me stesso di fare qualcosa di simile a quello che hai fatto lì con 'nm '. L'unica cosa che mi viene in mente riguardo a questa situazione è che si tratta di un difetto importante nello standard, di cui si parla persino qui http://www.jetcafe.org/jim/c-style.html#need_extern. Voglio dire, chi diavolo ha pensato che sarebbe stato bello se il compilatore avesse assunto la qualifica "extern" ?? C++ sicuramente non fa una tale stupida ipotesi. – johndoevodka