Em C, você costumava / às vezes (por uma questão de estilo) usar uma static
variável de escopo de arquivo em que usaria uma variável de membro de classe privada em C ++. Ao dimensionar para programas multithread, basta adicionar o thread_local
C11 ou a extensão suportada por __thread
muito tempo. Eu sei que você pode fazer exatamente o mesmo em C como C ++, colocando tudo dentro de um struct
e fazendo um conjunto de funções que leva um ponteiro para isso struct
como seu primeiro argumento. Algumas bibliotecas fazem isso extensivamente. Mas meu estilo pessoal é manter o struct
mínimo possível, se necessário.
Costumo ler ou ouvir algumas pessoas argumentando que variáveis 'globais' são muito ruins. Sigo suas razões, e a maioria de seus argumentos parece estar relacionada a extern
variáveis globais em termos de C. O que eles dizem é certamente verdade. Às vezes, uso 1 ou 2 das extern
variáveis declaradas em todo o programa, para simplificar bastante as coisas e quando é fácil controlá-las, mas ir mais longe tornará o programa imprevisível.
E as static
variáveis? Eles ainda têm o mesmo problema que as variáveis globais 'reais'? Talvez eu nem precise fazer essa pergunta e continue se achar que estou fazendo o certo, mas hoje vi outro tipo de postagem 'variáveis globais são ruins' e finalmente cheguei aqui pensando que talvez isso seja certo lugar para esse tipo de pergunta. Qual é o seu pensamento?
Esta pergunta não é uma duplicata de presente , porque esta questão pergunta sobre extern
e static
variáveis não-locais, enquanto a outra questão é sobre o arquivo-escopo e bloco de escopo de static
variáveis.