Если вы говорите о теневом глобальном var, то (в Linux) вы можете использовать dlsym()
, чтобы найти адрес глобальной переменной, например:
int myvar = 5; // global
{
int myvar = 6; // local var shadows global
int *pglob_myvar = (int *)dlsym(RTLD_NEXT, "myvar");
printf("Local: %d, global: %d\n", myvar, *pglob_myvar);
}
Если вы хотите, чтобы ваш код выглядел сексуально, используйте макрос:
#define GLOBAL_ADDR(a,b) b =(typeof(b))dlsym(RTLD_NEXT, #a)
...
int *pglob_myvar;
GLOBAL_ADDR(myvar, pglob_myvar);
...