I nomi mutati C ++ rimangono coerenti quando compilati su computer diversi?
-
27-10-2019 - |
Domanda
In generale, quello che ho osservato usando nm
su Linux è quello T
I nomi dei simboli (a cui mi interessa) rimangono coerenti tra i diversi computer anche quando non sto usando extern "C"
. La mia osservazione è corretta?
Nota Sto usando GCC su tutti i computer.
Soluzione
Sarebbe molto insolito per il computer, l'ora del giorno o il tempo per influire sul manglini di nome.
Ciò che è più probabile causare deviazioni sono le differenze nella versione del compilatore.
Ma molte piattaforme Linux definiscono un'interfaccia ABI (applicazione binaria) per C ++ che include, tra le altre cose, le regole di mangling. Su queste piattaforme lo stesso codice sorgente si compilerà con gli stessi nomi mutilati indipendentemente dai livelli di ottimizzazione, dalle versioni del compilatore, dal nome host, dal numero di serie del disco rigido, dall'ora del giorno, dal tempo, sia che la tua squadra sportiva preferita abbia perso la scorsa settimana o che qualsiasi fattore non sia Citato esplicitamente nell'ABI.