2012-05-03 7 views
0

私はMPLab V8.43をインストールし、プログラミング用にC18コンパイラをインストールしました。 小さなテストコードを作成しようとすると、最初の変数宣言で停止します。それは構文があると言います。MPLab/C prg /変数

unsigned char counter; 

私には間違っていません...それはunsigned char counter [1]でもしました。それでも私は構文エラーを投げかけました。 何がありますか?何か案は?

+0

心配しないで...組み込み世界のmain関数の中から宣言することはできません。 –

+0

実際には、埋め込み世界を含むC言語のmain関数の中から宣言できます。ブロックの最上部にあるだけです。 –

答えて

0

ローカル変数は、ブロックの先頭(この場合は関数)で宣言する必要があります。これはC89標準に準拠しています。

これらは許容されている:

void functionname(void) 
{ 
    unsigned char counter; 

    /* rest of code */ 
} 

void functionname(void) 
{ 
    /* code */ 

    for (unsigned char counter = 0; counter<30; counter++) 
    { 
    } 

} 

これは受け入れられない。

void functionname(void) 
{ 
    /* code */ 

    unsigned char counter = 0; 

    /* more code */ 

} 
0

名前char型のカウンタ変数があります。しかし配列や文字列ではありません。

so you can't access it by counter[1]. 
+0

私はカウンター[1]で彼がそれにアクセスしようとしている彼の元の質問には表示されません。おそらくそれは編集されたでしょう。 –

0

彼らは変数に従わないように、あなたがメインでローカル変数を定義することができますが、それが定義されなければなりません割当ブロックまたはコード実行ブロックを含む。

これはMPLAB C18で有効な変数宣言/ defintionです:しかし

void main() 
{ 
    /* Declare or Define all Local variables */ 
    unsigned char counter; 
    unsigned char count = 5; 

    /* Assignment Block or the code Execution Block starts */ 
    conter++; 
    count++; 
} 

、これは有効ではありませんし、 '構文エラー' が発生します:

void main() 
{ 
    /* Declare or Define all Local variables */ 
    unsigned char count = 5; 

    /* Assignment Block or the code Execution Block starts */ 
    count++; 

    /* What??? Another variable Declaration/Definition block */ 
    unsigned char counter;  /* Hmmm! Error: syntax error */ 
} 

希望に役立ちます!