В чем разница между функцией void и статической функцией void в C?
у меня два C файлы.
file1.c
int main()
{
func();
return 0;
}
file2.c
static void func(void)
{
puts("func called");
}
но, если я скомпилирую вышеуказанный код с помощью команды cc file2.c file1.c
, я получил ниже
undefined reference to `func'
collect2: error: ld returned 1 exit status
но, если я удалить static
ключевое слово внутри file2.c и скомпилировать приведенный выше код с помощью команды cc file2.c file1.c
, он успешно работает.
Итак, у меня есть вопрос,в чем разница между функцией void и статической void в C?
1 ответов
в чем разница между функцией void и статической функцией void в C?
реальный вопрос должен быть в том, в чем разница между static
и функции?
static
функции обычно используются, чтобы избежать конфликтов имен в большом проекте. Если вы проверяете Linux источник ядра, пример в drivers/net
вы увидите много static void
функции там. Драйверы разработаны различными поставщиками и использованием static
функции убедитесь, что они могут назвать функции так, как они хотят, не беспокоясь о конфликтах имен с другими разработчиками драйверов, не связанных.