Как получить доступ к статической переменной из другого файла в C? [дубликат]

5
задан Community 23 May 2017 в 12:22
поделиться

3 ответа

Не думаю, что есть простой способ. Если вы можете изменить файл со статической переменной, вы можете сделать что-то вроде:

static int hiddenVar; // The static var you want to get at

// A new function you write
int * getHiddenVar() {
   return &hiddenVar;
}

Но, конечно, если вы можете изменить файл, вы просто опустите статическое ключевое слово.

Также, я сомневаюсь, что это поможет, но мне приходилось делать что-то подобное при написании модуля ядра во FreeBSD. Я использовал трюк, в котором вызвал функции компоновщика ядра, чтобы найти адрес статической функции. Однако я сомневаюсь, что это можно сделать в обычной программе на Си.

5
ответ дан 14 December 2019 в 01:07
поделиться

Используйте ключевое слово extern в своем объявлении, чтобы указать, что переменная получена из другого файла (внешняя связь). Отбросьте ключевое слово static в исходном определении.

Внешняя и внутренняя связь объясняется в этой статье .

3
ответ дан 14 December 2019 в 01:07
поделиться

Это можно сделать только косвенно, например, если функция в пределах файла, содержащая статическую переменную, передает на нее указатель.

1
ответ дан 14 December 2019 в 01:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: