Я получаю следующую ошибку # error cpstm8 main. c отсутствует прототип , но я не понимаю, почему я его получаю, я объявил прототип своей функции на top и эта ошибка все еще продолжается, возможно, я что-то упускаю, код приведен ниже.
В моем коде я хочу собрать данные, поступающие с USB, сохранить их в переменной для последующей обработки.
int * UART1_ReceiveBytes();
void main(void)
{
while (TRUE)
{
int * p;
p = UART1_ReceiveBytes();
}
}
int * UART1_ReceiveBytes()
{
int i = 0;
int buf [3] = {0x30, 0x30, 0x30};
if (UART1_GetFlagStatus(UART1_FLAG_RXNE) != RESET)
{
do
{
buf[i] = UART1_ReceiveData8();
i++;
delay_ms(10);
}while(i != 3);
UART1_ClearFlag(UART1_FLAG_RXNE);
}
return buf;
}
Я использую COSMI C в качестве компилятора, так как я программирую STM8. Я следую решению, которое дал @Eraklon (int * UART1_ReceiveBytes (void);) Это решило проблему.
Я хотел бы знать, является ли объявление void только компилятором или есть какое-то конкретное c правило? Большинство примеров, которые я искал, объявили прототип подобным образом (int * UART1_ReceiveBytes ();)