Это a follow up questionимя переменной старшинство в с
Рассмотрим следующий пример кода:
#include <stdio.h>
int asdf = 5;
int main(void) {
sub(10);
return 0;
}
int sub (int asdf)
{
printf("%d\n",asdf);
}
В этом случае, как глобальная переменная, и местный аргумент использовать то же имя, asdf
. Код выводит 10
, поэтому используется локальная переменная. Ошибка компиляции или предупреждение не выбрасывается.
глобальная переменная по-прежнему доступны из sub()
, о чем свидетельствует, когда я изменить sub
«ы декларации в
int sub (int asd)
кода выводит 5. Таким образом, я знаю sub()
может получить доступ к глобальной переменной, но она делает не.
Я не смог найти четкого определения о размахе старшинства в стандарте с, поэтому мой вопрос:
Учитывая сценарий выше, называя локальные и глобальные переменные такой же просто плохая практика, или это вызвать ошибки/UB?
Использование глобальных переменных - это плохая практика, если только они не являются константами. – hgiesel
http://www.tutorialspoint.com/cprogramming/c_scope_rules.htm – user3159253
Это не UB, но наверняка, как может быть, вы получите сообщение об ошибке в своем коде раньше или позже. –