Там какая-либо причина состоит в том, чтобы использовать 'автоматическое' ключевое слово в C++ 03?

Использовать rmvirtualenv

Удалить среду, в $WORKON_HOME.

Синтаксис:

rmvirtualenv ENVNAME

Вы должны использовать деактивацию перед удалением текущей среды.

$ rmvirtualenv my_env

Ссылка: http://virtualenvwrapper.readthedocs.io/en/latest/command_ref.html

84
задан Melebius 3 January 2017 в 07:11
поделиться

5 ответов

auto - спецификатор класса хранения, static , регистр и extern тоже. В объявлении можно использовать только один из этих четырех.

Локальные переменные (без static ) имеют автоматическую продолжительность хранения, что означает, что они живут с начала своего определения до конца своего блока. Ставить перед ними auto излишне, так как в любом случае это значение по умолчанию.

Я не знаю причин использовать его в C ++. В старых версиях C, которые имеют неявное правило int, вы могли использовать его для объявления переменной, например:

int main(void) { auto i = 1; }

Чтобы сделать его допустимым синтаксисом или устранить неоднозначность из выражения присваивания в случае, если i входит в область видимости. Но в C ++ это все равно не работает (нужно указать тип). Как ни странно, стандарт C ++ пишет:

Объект, объявленный без спецификатора класса-хранилища в области блока или объявленный как параметр функции, по умолчанию имеет автоматическую продолжительность хранения. [Примечание: следовательно, автоматический спецификатор почти всегда избыточен и используется не часто; одно использование auto состоит в том, чтобы явно отличить оператор-объявление от оператора-выражения (6.8). - конечное примечание]

, которое относится к следующему сценарию, который может быть либо преобразованием a в int , либо объявлением переменной a типа int с повторяющимися круглыми скобками вокруг a . Это всегда считается декларацией, поэтому auto не добавит здесь ничего полезного, а будет для человека. Но опять же, человеку было бы лучше удалить лишние скобки вокруг a , я бы сказал:

int(a);

С новым значением auto , появившимся с C ++ 0x, я будет препятствовать использованию его со значением C ++ 03 в коде.

человеку лучше удалить лишние скобки вокруг a , я бы сказал:

int(a);

С новым значением auto , появившимся с C ++ 0x, я бы не рекомендовал его использовать со значением C ++ 03 в коде.

человеку лучше удалить лишние скобки вокруг a , я бы сказал:

int(a);

С новым значением auto , появившимся с C ++ 0x, я бы не рекомендовал его использовать со значением C ++ 03 в коде.

74
ответ дан 24 November 2019 в 08:28
поделиться

Ключевое слово auto в настоящий момент не имеет смысла. Вы совершенно правы, что он просто повторно устанавливает класс хранения по умолчанию для локальной переменной, действительно полезной альтернативой является static .

Он имеет совершенно новое значение в C ++ 0x. Это дает вам некоторое представление о том, насколько это было бесполезно!

34
ответ дан 24 November 2019 в 08:28
поделиться

GCC специально использует auto для вложенных функций - см. здесь .

Если у вас есть вложенная функция, которую вы хотите вызвать раньше его определение, вам нужно объявить его с помощью auto .

7
ответ дан 24 November 2019 в 08:28
поделиться

"auto" supposedly tells the compiler to decide for itself where to put the variable (memory or register). Its analog is "register", which supposedly tells the compiler to try to keep it in a register. Modern compilers ignore both, so you should too.

3
ответ дан 24 November 2019 в 08:28
поделиться

В старом компиляторе auto был одним из способов вообще объявить локальную переменную. Вы не можете объявлять локальные переменные в старых компиляторах, таких как Turbo C, без ключевого слова auto или чего-то подобного.

1
ответ дан 24 November 2019 в 08:28
поделиться
Другие вопросы по тегам:

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