Размещение объявления переменной в C

121
задан Nayuki 1 August 2015 в 17:43
поделиться

3 ответа

Это компилирует успешно, потому что GCC позволяет его как расширение GNU, даже при том, что это не часть стандарта ANSI или C89. Если Вы хотите придерживаться строго тех стандартов, необходимо передать эти -pedantic флаг.

138
ответ дан mipadi 24 November 2019 в 01:30
поделиться

Для C89 необходимо объявить все переменные в начале блок объема .

Так, Ваш char c объявление допустимо, как это наверху для блока объема цикла. Но, char *s объявление должно быть ошибкой.

74
ответ дан Nayuki 24 November 2019 в 01:30
поделиться

От пригодности для обслуживания, а не синтаксический, точка зрения, существует по крайней мере три хода мыслей:

  1. Объявляют все переменные в начале функции, таким образом, они будут в одном месте, и Вы будете в состоянии видеть всесторонний список сразу.

  2. Объявляют все переменные максимально близко к месту, они сначала используются, таким образом, Вы будете знать , почему каждый необходим.

  3. Объявляют все переменные в начале самого внутреннего блока объема, таким образом, они выйдут из объема как можно скорее и позволят компилятору оптимизировать память и говорить Вам, если Вы случайно будете использовать их, где Вы не предназначили.

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

я буду иногда объявлять переменные в меньшем блоке объема, но только на Серьезном основании, которого у меня есть очень немногие. Один пример мог бы быть после fork(), для объявления переменных, необходимых только дочернему процессу. Мне этот визуальный индикатор является полезным напоминанием их цели.

22
ответ дан Adam Liss 24 November 2019 в 01:30
поделиться
Другие вопросы по тегам:

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