Задать вопрос
mrjbom
@mrjbom

Как устранить неявное объявление функции в коде?

Здравствуйте.

Имеется файл kmain.c, в нём у нас входная точка и главная функция, которая использует функцию initVGAMemory();, прототип функции описан в заголовочном файле vgamemory.h(реализация в vgamemory.c).

К kmain.c подключён лишь один заголовочный файл kernel.h, в нём vgamemory.h никаким образом не подключается, получается, в kmain.c мы никаким образом не можем использовать эту функцию, т.к. она напрямую и косвенно не подключена.

При компиляции вылезает предупреждение:
./source/kmain.c:7:5: warning: implicit declaration of function ‘initVGAMemory’ [-Wimplicit-function-declaration]


Каким образом я могу отловить и устранить эту проблему? Ибо оно хоть и компилируется, но я хочу что-бы функции работали лишь при явном включении заголовочного файла.
  • Вопрос задан
  • 4367 просмотров
Подписаться 1 Простой 2 комментария
Ответ пользователя tsarevfs К ответам на вопрос (1)
tsarevfs
@tsarevfs
C++ developer
Про ошибку: https://ru.stackoverflow.com/a/622138/221454
>Главная функция использует функцию initVGAMemory()
>Прототип функции описан в заголовочном файле vgamemory.h
>К kmain.c подключён лишь один заголовочный файл kernel.h, в нём vgamemory.h не подключается

Вы используете необъявленную функцию initVGAMemory. Я бы рассматривал этот варнинг как полноценную ошибку. Мне не понятно какой эффект вы хотите получить.
Либо уберите использование функции, либо подключите хедер.
Ответ написан