Я пишу C (общую) библиотеку. Он начинался как единая единица перевода, в которой я мог бы определить пару глобальных переменных static
, которые должны быть скрыты от внешних модулей.Как скрыть глобальную переменную, которая видна в нескольких файлах?
Теперь, когда библиотека выросла, я хочу разбить модуль на несколько меньших исходных файлов. Проблема заключается в том, что теперь у меня есть два варианта для указанных глобал:
имеют частные копии на каждом исходный файл и как-то синхронизировать их значение с помощью вызова функции - это будут получить очень некрасиво очень быстро.
Измените определение
static
, чтобы переменные были общими для всех единиц перевода, используяextern
, но теперь код приложения, связанный с библиотекой, может обращаться к этим глобальным переменным, если там создается требуемое объявление.
Итак, существует ли опрятный способ сделать частную глобальную переменную, разделяемую между несколькими конкретными единицами перевода?
Что заставляет вас думать, что OP использует GCC и что переносимость кода нежелательна? – Lundin
Я сказал, что это расширение GCC. Я добавил PS, повторяя это. –
Да, да. Я прокомментировал, так как я не думаю, что Stack Overflow должен быть форумом GCC, все, кажется, неявно предполагают GCC в наши дни. – Lundin