5

私は C で頭のおかしいインタープリターを書いていますが、慣れていないものの使用に少し問題があります。ブレインファックでは、コンマ ( ,) は本質的に getchar() です。だから私は次のコードを持っています:

//This is just ptr
static char *ptr;

switch (command)
{
  case ',':
    *ptr=getchar(); // Here's the code causing error
    break;
}

これをコンパイルしようとすると、 gcc がスローerror: a label can only be part of a statement and a declaration is not a statementします。

何か案は?(これについては申し訳ありませんが、このエラーにあまり慣れていません)

4

2 に答える 2

7

私はあなたが意味すると信じています

*ptr = getchar();

それ以外の

ptr*=getchar();

という*=のは、左側の値に右側の値を掛けて、これを左側の値に割り当てるからです。ただし、間接参照 して結果をその場所ptrに書き込む必要があります。getchar


それ以外は、私のバージョンのgcc(commandどこかで宣言した場合)でコードが完全に正常にコンパイルされるため、完全な例を示していないことは明らかです。

于 2011-12-19T11:43:47.543 に答える
1

これは完全に私の間違いでした。以前にコードをコメントアウトしていました。両方のコードを同時にコメントアウトしたため、これがエラーの原因であると考えましたが、このエラーは発生しませんでした。ただし、両方をコメントアウトしようとしましたが、その理由がわかりました。

それは FILE と別のケースでのシークの使用に関するものでした。

于 2011-12-19T11:52:13.440 に答える