Пространства имён
Варианты
Действия

Storage-class specifiers

Материал из cppreference.com
< c‎ | language

 
 
Язык C
Общие темы
Препроцессор
Комментарии
Ключевые слова
Таблица ASCII
Escape-последовательности
История C
Управление программой
Операторы условного выполнения
Операторы повторения
Операторы перехода
Функции
объявление функции
спецификатор inline
Типы
Спецификаторы
cv-спецификаторы
спецификаторы продолжительности хранения
спецификатор alignas (C99)
Литералы
Выражения
порядок вычисления
альтернативные операторы
операторы
приоритет операторов
Утилиты
typedef-объявление
атрибуты (C99)
приведения типов
Разное
Ассемблерные вставки
 
  • auto - автоматическая с длительностью никакой связи.
    Оригинал:
    auto - automatic duration with no linkage.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • register - автоматическая с длительностью никакой связи. Также подсказки компилятору разместить переменную в регистре процессора.
    Оригинал:
    register - automatic duration with no linkage. Also hints to the compiler to place the variable in the processor's register.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • static - статическая продолжительность внутренних связей.
    Оригинал:
    static - static duration with internal linkage.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • extern - статическая продолжительность с внутренней или чаще внешних связей.
    Оригинал:
    extern - static duration with either internal or more usually external linkage.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • _Thread_local - (начиная с C11) - резьба срок хранения.
    Оригинал:
    _Thread_local - (начиная с C11) - thread storage duration.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

Содержание

[править] Объяснение

[править] Хранение продолжительности

Все переменные в программе есть одна из следующих длительности хранения, что определяет его жизнь
Оригинал:
All variables in a program have one of the following storage durations that determines its lifetime:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • ' 'Автоматические длительности хранения. Переменных выделяется в начале ограждающих блоков кода и освобожден в конце. Это значение по умолчанию для всех переменных, кроме тех, заявил static, extern или _Thread_local.
    Оригинал:
    automatic storage duration. The variable is allocated at the beginning of the enclosing code block and deallocated at the end. This is the default for all variables, except those declared static, extern or _Thread_local.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • ' 'Статической длительности хранения. Переменную выделяется при запуске программы и освобождаются, когда программа заканчивается. Только один экземпляр переменной может существовать. Переменные, объявленные с static или extern эту длительность хранения.
    Оригинал:
    static storage duration. The variable is allocated when the program begins and deallocated when the program ends. Only one instance of the variable can exist. Variables declared with static or extern have this storage duration.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • ' 'Поток длительность хранения (начиная с C11). Переменную выделяется, когда поток начинает и освобождается, когда поток завершается. Каждый поток имеет свой собственный экземпляр переменной. Только переменные, объявленные _Thread_local эту длительности хранения. _Thread_local может быть объявлен только для переменных, объявленных с static или extern и не может быть использован в объявлении функции.
    Оригинал:
    thread storage duration (начиная с C11). The variable is allocated when the thread begins and deallocated when the thread ends. Each thread has its own instance of the variable. Only variables declared _Thread_local have this storage duration. _Thread_local can only be declared for variables declared with static or extern and cannot be used in a function declaration.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Связь

Связь относится к способности переменной или функции должен быть передан в других областях. Если переменная или функция с тем же идентификатором объявлена ​​в нескольких областях, но не могут быть отнесены к не все из них, а затем несколько экземпляров переменной создаются. Следующие связи признаются:
Оригинал:
Linkage refers to the ability of a variable or function to be referred to in other scopes. If a variable or function with the same identifier is declared in several scopes, but cannot be referred to from all of them, then several instances of the variable are generated. The following linkages are recognized:
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • ' 'Никакой связи. Переменная может быть передан только из сферы это дюйма Все переменные с автоматической, резьба и динамические длительности хранения есть эта связь.
    Оригинал:
    no linkage. The variable can be referred to only from the scope it is in. All variables with automatic, thread and dynamic storage durations have this linkage.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • ' 'Внутренней связи. Переменная может быть отнесено к из всех областей в текущей единице перевода. Все переменные, которые объявлены static эту связь.
    Оригинал:
    internal linkage. The variable can be referred to from all scopes in the current translation unit. All variables which are declared static have this linkage.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
  • ' 'Внешних связей. Переменная может быть отнесено к любой другой единицы трансляции во всей программе. Все переменные, которые объявлены либо extern или const без явного хранения спецификатора класса, но не static, имеют эту связь.
    Оригинал:
    external linkage. The variable can be referred to from any other translation units in the entire program. All variables which are declared either extern or const with no explicit storage-class specifier, but not static, have this linkage.
    Текст был переведён автоматически используя Переводчик Google.
    Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.

[править] Ключевые слова

auto, register, static, extern, _Thread_local

[править] Пример