Вопрос касается области видимости переменных в языке программирования C++. Давайте разберемся, что означают предложенные варианты и какой из них правильный.
- auto - это спецификатор, который используется для объявления локальных переменных. Такие переменные доступны только в пределах блока, где они были объявлены. Таким образом, auto не подходит для создания переменных, доступных во всех файлах программы.
- extern - это спецификатор, который позволяет объявить переменную, которая определена в другом файле. Используя extern, вы можете получить доступ к переменной, объявленной в одном файле, из другого файла. Это именно тот спецификатор, который позволяет создавать переменные, доступные во всех файлах программы.
- static - это спецификатор, который ограничивает область видимости переменной только тем файлом, в котором она была объявлена. Таким образом, static не подходит для глобальных переменных, доступных во всех файлах.
- register - это спецификатор, который указывает компилятору, что переменная должна храниться в регистре процессора для более быстрого доступа. Однако, это также не влияет на область видимости переменной.
Таким образом, правильный ответ на ваш вопрос - это extern. Используя extern, вы можете объявить глобальные переменные, доступные во всех файлах вашей программы.