C char函数(void)和void函数(void)的区别

标签 c char void spi atmega16

在我的论文中,我使用 ATmega16 通过 SPI 与 MCP2515 进行通信。当我们检查 Atmega16 数据表中将 SPI 设置为从机模式的示例代码时,我们会得到下一个示例代码。

void SPI_SlaveInit(void)
{
/* Set MISO output, all others input */
    DDR_SPI = (1<<DD_MISO);
/* Enable SPI */
    SPCR = (1<<SPE);
}
char SPI_SlaveReceive(void)
{
/* Wait for reception complete */
    while(!(SPSR & (1<<SPIF)))
;
/* Return data register */
    return SPDR;
}

我们不明白为什么他们使用 char SPI_SlaveReceive(void) 而不是 void SPI_SlaveReceive(void)。 有人可以解释一下为什么他们使用 char 而不是 void 吗?有什么不同? 我在互联网上找不到很好的解释。

最佳答案

SPI_SlaveReceive 接收到一些内容,因此它将该“内容”作为 char 返回,因此返回类型。如果输入返回 void,您将无法获取收到的值,这不是很有用!

如果它没有返回收到的内容,您将如何获得收到的内容..?

关于C char函数(void)和void函数(void)的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40256730/

相关文章:

c - c语言用字符串变量触发break关键字

c - c中有符号和无符号字符之间的区别

java - 为什么我不能从方法中显式返回 void?

c - printf ("%p") 并转换为 (void *)

c - 如何在 C 中打印微秒符号?

CoreAudio 输入渲染回调从外部音频接口(interface) Mac OS 10.14 Mojave 渲染全 0

c - GCC -O3 6.1.1、5.3.1、4.1.2 无法编译正确的可执行文件(C 中的递归合并排序)

c - 为什么我可以使用 CLion 修改字符串文字?

c++ - 当我尝试将范围值存储为8位固定宽度整数时,它向我显示了其他一些值[ASCII]

Java 错误消息 - 调用返回整数的方法时,此处不允许使用 'void' 类型