5

我正在用 C 语言编写一个笨拙的解释器,并且在使用我不习惯的东西时遇到了一些麻烦。在 Brainfuck 中,逗号 (,) 本质上是 getchar()。所以我有以下代码:

//This is just ptr
static char *ptr;

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

error: a label can only be part of a statement and a declaration is not a statement当我尝试编译它时,gcc 向我抛出。

有任何想法吗?(对不起,对这个错误不太熟悉)

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 回答