/ Inicialização variável em diferentes unidades de tradução - c ++, inicialização

Inicialização variável em diferentes unidades de tradução - c ++, inicialização

Suponha que tenhamos duas unidades de tradução:

//--a.cpp--//

int a;
int b;
int c;

int main(){ }

//--b.cpp--//


int d;
int e;
int f;

Esse programa não inicia um thread. Daí (3.6.2 / 2)

a inicialização de uma variável é sequenciada indeterminadamente em relação à inicialização de uma variável definida em um unidade de tradução.

Isso significa que somente após a inicialização de todas as variáveis ​​em uma unidade de tradução (por ex. b.cpp), a implementação começa a inicializar a variável em outra unidade de tradução (a.cpp)?

Respostas:

1 para resposta № 1

A inicialização de globais em uma unidade de tradução está em ordem de definição, portanto a, b, c e d, e, f.

Mas não é especificado se é a, b, c e depois d, e, f ou se é o contrário.

Ou mesmo em ordem interdisciplinar (digamos, a, d, b, c, e, f), embora eu pense que a maioria das implementaçõesirá inicializar todas as variáveis ​​globais a partir de uma unidade de tradução em uma única linha, portanto, diferente de em multithreading, eu não acho que isso vai acontecer na prática.


0 para resposta № 2

Não, indeterminadamente seqüenciado significa que elesocorrer em alguma ordem, mas essa ordem não é especificada. As variáveis ​​em uma unidade de tradução serão inicializadas antes ou depois das variáveis ​​na outra.