Как можно использовать методы без объявления?
То, что они делают, напрямую предоставляет само определение. Проблема в том, что если он не объявлен в заголовочном файле, любой другой файл, зависящий от этого файла, не знает о существовании функции zoneChanged
. Однако вы можете связать его через ключевое слово extern
, и это другая история.
Что касается компилятора, он должен знать, что это за функция в текущем модуле компиляции, иначе компилятор жалуется. В случае, если вы пересылаете объявление функции, вы обещаете компилятору, что определение находится где-то еще, но может быть или не быть перед точкой вызова. И если вы не предоставите определение, компоновщик жалуется.