Цитата(beer_warrior @ Feb 4 2007, 00:08)

Они ведь находятся в разных областях видимости. Да и размещаются - одна в дата сегменте другая с стеке.
Раньше все прокатывало на ура.
Область видимости локальных имен вложена в область видимости глобальных имен, поэтому там, где объявлено имя локальной переменной, видны и локальные и глобальные имена одновременно. Такая ситуация вызывает предупреждение компилятора, поскольку он будет работать с локальной переменной, игнорируя глобальную. Он Вас просто предупреждает, "а уверен ли ты, программист, что ты собираешься работать с локальной переменной?"
Есть ключ, контролирующий это предупреждение:
-Wshadow
Warn whenever a local variable shadows another local variable, parameter or global variable or whenever a built-in function is shadowed.
Возможно, поменялась установка этого ключа по умолчанию в какой-либо из версий компилятора в связи с расширением поддержки C99.
А в каком сегменте будут размещаться используемые переменные определяется как раз областью их видимости. В конце концов, используйте префиксы для глобальных имен, а для ограничения видимости имен переменных пределами одного файла используйте static.
С уважением.