TL; DR: Вы оставляете себя открытым для ошибок, и на самом деле ничего не скрываете.
C не имел правила неявного объявления со времен C99, и даже до того, как оно не было функцией, было бысоветую использовать.Он отключает статическую проверку типов в аргументах функции и оставляет нас открытыми для неопределенного поведения на нескольких фронтах.
Не используйте его!Это предупреждение компилятора предназначено исключительно для того, чтобы не сломать старые базы кода, но это должно быть ошибкой.И на самом деле является ошибкой, когда требуется самый строгий режим соответствия от чьего-либо компилятора.
Кроме того, вы ничего не скрываете.Макрос должен появиться в заголовочном файле, поэтому каждый модуль перевода будет осведомлен об этом символе.Вы ничего такого не скрываете.Не говоря уже о том, что символ должен иметь внешнюю связь (иначе ваша программа тоже не будет ссылаться).
Так что просто добавьте объявление функции после или перед макросом, чтобы убедиться, что ваш код корректен, даже если он скомпилирован компилятором этого тысячелетия.
О, и идентификаторы с начальным подчеркиванием в файлеОбласть действия зарезервированы для реализации (ваша цепочка инструментов).Это означает, что у вас не может быть идентификатора области файла с начальным подчеркиванием, для риска носовых демонов.Лучше переименуй _print_info_msg
.