Функция объявлена статической, но не определена
У меня есть файл заголовка, предположим abc.h, где у меня есть объявление функции как:
static int function1();
Я включил этот файл заголовка в abc.c и определил функцию и использовал ее.
static int function1()
{
< function definition>
}
После компиляции я получаю предупреждение:
warning: function1 declared static but never defined
Как удалить предупреждение, не удаляя статические.
Спасибо.
Ответы
Ответ 1
Статичная функция может быть объявлена в заголовочном файле, но это приведет к тому, что каждый исходный файл включит заголовочный файл в свою собственную личную копию функции, что, вероятно, не является тем, что было предназначено.
Неужели вы не включили файл abc.h в любые другие .c файлы?
Поскольку объявление функции как статического, требуется, чтобы функция была определена в all.c файле (файлах), в который она включена.
Ответ 2
Хорошая практика: объявляйте статические функции в исходном файле, в котором они определены (пожалуйста, также укажите прототип), так как это единственный файл, в котором они отображаются.
Таким образом, функция видна только этому файлу, такие проблемы видимости могут уменьшить возможный конфликт кода! Итак, просто укажите прототип и определение статической функции в .c файле. Не включайте статическую функцию в файл заголовка; файл .h предназначен для внешнего потребления.
Дубликат: Статические функции в C