Le variabili globali vengono inizializzate in ordine di apparire nel modulo di traduzione e nell'ordine relativo di inizializzazione delle variabili in diversi moduli di traduzione in non specificato (il cosiddetto "fiasco dell'ordine di inizializzazione statica").Gli spazi dei nomi influenzano l'ordine di inizializzazione in C++?
Gli spazi dei nomi hanno alcuna influenza su questo? Per esempio se ho questo codice:
//first.cpp
int first;
int second;
avrà alcuna differenza in ordine di inizializzazione rispetto a questo codice:
//second.cpp
namespace {
int first;
}
int second;
ci sono casi in cui mettere un oggetto globale in un namespace colpisce ordine di inizializzazione?
Si noti che lo standard C++ definisce che i nomi globali sono solo quelli che vengono visualizzati nell'ambito globale ([basic.scope.namespace]/3). Quindi per quanto riguarda il C++, in second.cpp 'first' non è globale. Ovviamente per tutti gli scopi pratici da fare con "globals" e in particolare "globals" mutevoli essendo una PITA con cui lavorare, in tutti i linguaggi di programmazione, è un "globale". –