Не думаю, что есть простой способ. Если вы можете изменить файл со статической переменной, вы можете сделать что-то вроде:
static int hiddenVar; // The static var you want to get at
// A new function you write
int * getHiddenVar() {
return &hiddenVar;
}
Но, конечно, если вы можете изменить файл, вы просто опустите статическое ключевое слово.
Также, я сомневаюсь, что это поможет, но мне приходилось делать что-то подобное при написании модуля ядра во FreeBSD. Я использовал трюк, в котором вызвал функции компоновщика ядра, чтобы найти адрес статической функции. Однако я сомневаюсь, что это можно сделать в обычной программе на Си.
Используйте ключевое слово extern в своем объявлении, чтобы указать, что переменная получена из другого файла (внешняя связь). Отбросьте ключевое слово static в исходном определении.
Внешняя и внутренняя связь объясняется в этой статье .
Это можно сделать только косвенно, например, если функция в пределах файла, содержащая статическую переменную, передает на нее указатель.