В старых версиях языка C до 1999 года существовало правило "неявного int
". Если вы объявили функцию без указания типа возвращаемого значения, предполагается, что он вернет результат типа int
. Стандарт 1999 года исключил это правило и сделал обязательным указание типа возврата в любом объявлении или определении функции. Многие компиляторы обслуживают старый код, разрешая такие объявления или диагностируя их с нефатальным предупреждением.
Даже в до-1999 C не было никакой реальной причины использовать правило "неявного int
". Если функция возвращает результат int
, вы всегда можете объявить его таким образом явно. ( Очень старый C, до 1989 года, не имел void
, но поддержка C после 1989 года по существу универсальна.)
Что касается вашей другой ошибки:
Error[Pe159]: declaration is incompatible with previous "send_data_command"
это означает, что у вас есть два объявления, или объявление и определение, send_data_command
, и они в некоторой степени различаются. В вашем вопросе есть только один случай send_data_command
, поэтому вы не показали нам код, вызывающий эту ошибку. Убедитесь, что все ссылки на send_data_command
в вашей программе согласованы, и убедитесь, что объявление - в частности, прототип (который указывает типы любых параметров) - отображается каждый раз, когда вы вызываете его.
(Кстати, ваш код было бы намного легче читать, если бы он был с отступом. Существуют автоматизированные инструменты, которые могут помочь вам в этом. Отступы должны отражать вложенную структуру вашего кода.)