我收到以下错误#error cpstm8 main.c missing prototype,但我不明白的是我收到它的原因,我在顶部声明了我的函数的原型,这个错误仍然不断发生,也许我是缺少一些东西,代码如下。
在我的代码中,我想收集来自 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;
}
我正在使用 COSMIC 作为编译器,因为我正在编程 STM8 我遵循@Eraklon 给出的解决方案 (int * UART1_ReceiveBytes(void);) 这解决了问题。
我想知道声明 void 是否只是关于编译器还是有一些特定的规则?我正在查看的大多数示例都声明了这样的原型 (int * UART1_ReceiveBytes();)