2016-10-26 19 views
-4

私の論文では、SPIでMCP2515と通信するためにATmega16を使用しています。 Atmega16のデータシートにSPIをスレーブモードとして設定するためのサンプルコードを確認する際には、次のコード例があります。char関数(void)とvoid関数(void)のCの差

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; 
} 

彼らだけではなく、ボイドSPI_SlaveReceive(無効)の文字SPI_SlaveReceive(ボイド)を使用している理由を私たちは理解していません。 誰かがvoidの代わりにcharを使う理由を説明することができますか?違いはなんですか? 私はインターネット上で良い説明を見つけることができません。

+0

'SPI_SlaveReceive'は何も返さないので、' void'以外の戻り値の型はありません。 –

+1

charの問題点SPI_SlaveReceive(void)は呼び出されたときに何も取得せず、charを返します。 void SPI_SlaveInit(void)は何も返しません。何も返しません。 –

+4

「they」は値を返すためですか? – SingerOfTheFall

答えて

1

SPI_SlaveReceiveは何かを受け取っているので、「何か」をcharとして返します。したがって、戻り値の型です。 voidを返すように入力された場合、受け取った値を取得することはできませんが、これはあまり役に立ちません!

受信したものが返されなかった場合、受け取ったものはどのように取得されますか。

関連する問題