type redclaration of XXエラーについて

初めて参加しますR8C/M12Aでソーラーパネルよりバッテリーに充電する装置を作成してます。

その中で液晶表示器(16文字2行)で電圧と電流をこの表示器表示させようとC言語で作りましたが

下記の関数でtype redclarationn of lcd_cmdのエラーメッセージが出ました。

1度目と2度目で型が違う重複定義している事らしいのですが対処法がわかりません。

2度目は4bit shiftしたため型が違うと判断されたぼですか。ご教示お願いします。

void lcd_cmd( cmd )

{

lcd_out( cmd, 1)//上位4ビット出力(1回目)

lcd_out( cmd<<4, 1)//下位4ビット出力

if( cmd == 0x01 || cmd == 0x02 ) // ClearとHomeの時だけ

delay_ms( 2 );                    //2ms待ち

else

delay( 50 );                         //他は50us待ち

Parents
  • lcd_cmd(cmd) の関数宣言より前でlcd_cmdを呼び出しているところがあるはずです。

    最初にlcd_cmdが呼び出されているところで、パラメータにint以外の型を使用しており、

    関数宣言では型を省略したため、intと解釈され、再宣言されたとみなされているのではないでしょうか。

    解決法ですが、関数プロトタイプ宣言をソースの頭に指定すれば良いと思います。

    ソースファイルが複数あり、lcd_cmdがあちこちから呼ばれる場合は、ヘッダファイルに関数プロトタイプを入れて、呼び出すソースや定義しているソースでincludeします。

Reply
  • lcd_cmd(cmd) の関数宣言より前でlcd_cmdを呼び出しているところがあるはずです。

    最初にlcd_cmdが呼び出されているところで、パラメータにint以外の型を使用しており、

    関数宣言では型を省略したため、intと解釈され、再宣言されたとみなされているのではないでしょうか。

    解決法ですが、関数プロトタイプ宣言をソースの頭に指定すれば良いと思います。

    ソースファイルが複数あり、lcd_cmdがあちこちから呼ばれる場合は、ヘッダファイルに関数プロトタイプを入れて、呼び出すソースや定義しているソースでincludeします。

Children