Accediendo a la variable global oculta por local

Posible duplicado:
¿Cómo puedo acceder a una variable global sombreada en C?

¿Cómo acceder a la variable global en C, si hay una variable local con el mismo nombre?

int m=20 ; void main() { int m=30; } 

En C, puedes. Por supuesto, esto es solo trivialidad, nunca debes hacerlo en la vida real.

La statement de algo extern se puede hacer en cualquier lugar, y siempre vincula la variable declarada al global de ese nombre.

 #include  int i = 3; int main( int argc, char **argv ) { int i = 6; printf( "%d\n", i ); { // need to introduce a new scope extern int i; // shadowing is allowed here. printf( "%d\n", i ); } return 0; } 

En C ++, el global siempre está disponible como ::i .

En C no hay manera. en realidad, introduciendo un scope adicional y con una statement extern , puede ver la respuesta de @Potatoswatter.

En C ++ puede buscar identificadores en el espacio de nombres global utilizando :: (como en ::m=15 ), que, por cierto, es el mismo operador que se usa para acceder a los miembros de los espacios de nombres “normales” ( std::cout ..).

Además, es int main() .

En C no lo haces. Dales un nombre diferente, es confuso y una mala práctica de todos modos.

De todos modos, el mismo nombre es una mala práctica hasta que se redefina m. Está accediendo a la variable global de cualquier manera.

  int m=20 ; void main() { print m // 20 would be printed here . // max you can do int m=30; }