Eu aprendi desde o ensino médio que definir variáveis como esta:
int _a;
ou
int __a;
deve ser considerada uma prática ruim, porque isso acabaria confundindo os compiladores que usam variáveis que começam com um sublinhado para nomear variáveis temporárias.
Até onde eu sei, essa é a razão pela qual algumas pessoas gostam de mover o sublinhado no final do nome, como:
int a_;
No entanto, vejo um monte de código ao redor que faz uso de variáveis de início de sublinhado. E esse código cria bastante bem com o Visual Studio 2010 e o g ++ 4.x.
Então eu me pergunto: isso não é problema hoje em dia? Os compiladores modernos são mais inteligentes quanto às convenções de nomenclatura?