В мои дни колледжа я читал о auto
ключевое слово и со временем я на самом деле забыл, каково это. Это определяется как:
определяет локальную переменную как наличие локального времени жизни
Я никогда не находил, что это используется где-нибудь, это действительно используется и раз так тогда, где это используется и в который случаи?
auto
- модификатор наподобие static
. Он определяет класс хранения переменной. Однако, поскольку по умолчанию для локальных переменных установлено значение auto
, обычно вам не нужно указывать его вручную.
На этой странице перечислены различные классы хранения в C.
Если бы вы прочитали список IAQ (Редко задаваемые вопросы), вы бы знали, что автомобиль полезен, прежде всего, для определения или объявления транспортного средства:
auto my_car;
Транспортное средство, которое постоянно припарковано на открытом воздухе:
extern auto my_car;
Для тех, кто не имеет никакого чувства юмора и хочет "только факты Мэм": короткий ответ заключается в том, что никогда нет никаких причин использовать auto
вообще. Единственный раз, когда вам разрешено использовать auto
- это переменная, которая уже имеет auto
класс хранения, так что вы просто указываете что-то, что может случиться в любом случае. Попытка использовать auto
для любой переменной, которая уже не имеет класса хранения auto
, приведет к тому, что компилятор отвергнет ваш код. Полагаю, если вы хотите получить технический, то ваша реализация не обязательно должна быть компилятором (но она есть) и теоретически может продолжить компиляцию кода после выдачи диагностики (но она не будет).
Небольшое дополнение к kaz:
Есть еще:
static auto my_car;
которое требует диагностики по ISO C. Это корректно, так как объявляет, что машина сломана. Диагностика проводится бесплатно, но выключение индикатора приборной панели обойдется вам в восемьдесят долларов. (Двадцать или меньше, если вы покупаете собственный USB ключ для бортовой диагностики на eBay).
Вышеупомянутый extern auto my_car
также требует диагностики, и по этой причине он никогда не запускается через компилятор, кроме как городским персоналом, которому поручено следить за соблюдением правил парковки.
Если вы видите много статического auto extern ...
в любой кодовой базе, вы находитесь в плохом районе; ищите работу получше сразу, пока все не превратилось в Ржавчину.
В C auto
- это ключевое слово, которое указывает, что переменная является локальной для блока. Поскольку это значение по умолчанию для переменных с блочной областью видимости, оно не нужно и используется очень редко (не думаю, что когда-либо видел его использование вне примеров в текстах, в которых обсуждается ключевое слово). Мне было бы интересно, если бы кто-нибудь мог указать на случай, когда использование auto
требовалось для получения правильного синтаксического анализа или поведения.
Однако в стандарте C ++ 11 ключевое слово auto
было «взломано» для поддержки вывода типа, где тип переменной может быть взят из типа ее инициализатора:
auto someVariable = 1.5; // someVariable will have type double
Вывод типа добавляется в основном для поддержки объявления переменных в шаблонах или возвращаемых из функций шаблона, где типы, основанные на параметре шаблона (или выведенные компилятором при создании экземпляра шаблона), часто может быть довольно болезненным для объявления вручную.