В C, если я правильно помню, имена функций static
являются локальными по отношению к исходному файлу, в котором они определены, но все другие имена функций существуют в глобальном пространстве имен. Так что если у вас есть file1.c
с
void fn1() {}
static void fn2() {}
и file2.c
с
void fn1() {}
static void fn2() {}
и вы пытались скомпилировать их чем-то вроде
cc file1.c file2.c
тогда вы получите конфликт имен между fn1
в file1.c
и fn1
в file2.c
, но не между двумя fn2
функциями (потому что они статические). (Конечно, вы также получили бы кучу других ошибок, потому что эта программа ничего не делает , но они не относятся к области видимости.)