Я стал изучать C после C++ и обнаружил, что часто локальные переменные функции в С объявляются в самом начале этой функции. Стив Макконнелл пишет, что лучше объявлять переменные по необходимости (стараясь уменшить область видимости и persistense).
Я попробовал масдаевский сишный компилятор (непомню его название, вроде MSVC), так вот он действительно выдает ошибку, если объявить локальные переменные не в начале функции. Вопрос: зачем сейчас продолжают писать на С, объявляя локальные переменные в начале функции, а то получается Паскаль с его var-разделом?
Как возможный ответ - ограничение компилятора, и если я пишу прогу, которая должна быть переносимой, то надо писать так. Тогда встречный вопрос: неужели это актуально и нет «современных» компиляторов, которые позволяют объявлять переменные «по-нормальному»? Может, в крайнем случае, скопилировать прогу на С с помощью С++ компилятора?
Если возможно, дайте подробный ответ.