balmer писал(а):drakon писал(а): если тип *.c поменять на *.cpp то объявлять можно где-угодно, когда-то проверял.
Еще есть стандарт C99, там можно объявлять переменные где угодно.
Все верно
http://ru.wikipedia.org/wiki/C99
Новые возможности
В C99 было добавлено несколько новых возможностей, многие из которых уже были реализованы в качестве расширения в некоторых компиляторах:
встраиваемые функции (объявленные с ключевым словом inline)
Место, в котором возможно объявление переменных, больше не ограничено глобальной областью видимости и началом составного оператора (блока)
Несколько новых типов данных, включая long long int, дополнительные расширенные целые типы, явный логический тип данных, а также комплексный тип (complex) для представления комплексных чисел
Массивы переменной длины (variable-length arrays)
Поддержка однострочных комментариев, начинающихся с //, как в BCPL или C++
Новые библиотечные функции, как, например, snprintf
Новые заголовочные файлы, такие как stdbool.h и inttypes.h
Типовые математические функции (tgmath.h)
Улучшена поддержка стандарта IEEE 754-2008
Проектируемые инициализаторы
Составные константы
Поддержка вариативных макросов (макросов переменной арности)
Смягчение (restrict) ограничений для более агрессивной оптимизации кода