我遇到了 FAT file system 的库.它是一个用于嵌入式系统的库。在示例代码中,我发现了一些我不理解的有趣行。
这是有问题的行::
sd_protocol.spiHwInit=(void *)atmega_spi_init;
其中 sd_protocol
是一个结构 SdSpiProtocol sd_protocol;
这是类型定义:
struct _SdSpiProtocol
{
void *spiHwInterface;
euint8 (*spiHwInit)(void* spiHwInterface);
euint8 (*spiSendByte)(void* spiHwInterface,euint8 data);
};
typedef struct _SdSpiProtocol SdSpiProtocol;
atmega_spi_init
是以下函数:
euint8 atmega_spi_init(atmegaSpiInterface *iface)
{
euint8 i;
/* Unselect card */
PORTB |= iface->pinSelect;
/* Set as master, clock and chip select output */
DDR_SPI = (1<<DD_MOSI) | (1<<DD_SCK) | 1;
/* Enable SPI, master, set clock rate to fck/2 */
SPCR = (1<<SPE) | (1<<MSTR); /* fsck / 4 */
SPSR = 1; /* fsck / 2 */
/* Send 10 spi commands with card not selected */
for(i=0;i<10;i++)
atmega_spi_send(iface,0xff);
/* Select card */
PORTB &= ~(iface->pinSelect);
return(0);
}
sd_protocol.spiHwInit=(void *)atmega_spi_init;
这不是函数调用,那是什么?
我也不明白这行在类型定义中应该做什么:
euint8 (*spiHwInit)(void* spiHwInterface);
提前致谢!
最佳答案
关于任何人都可以解释以下 C 语法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27216059/