【问题标题】:"char not expected" error when compiling in MINIX在 MINIX 中编译时出现“char not expected”错误
【发布时间】:2015-11-02 10:13:48
【问题描述】:

我需要在屏幕上打印一行然后获取用户输入,但是printf("blah") 语句导致我的代码无法编译。错误消息显示“char not expected”,但是当我将printf() 语句注释掉时,代码会编译。

#include <stdio.h>
#include <stdlib.h>

int main(void) 
{ 
    printf("Welcome to the shell!\n"); 
    printf("shell:>");
    char* inp = (char*)malloc(20); // error at this line
}

我在MINIX 3.1.0中使用cc编译器

【问题讨论】:

  • see why not to castmalloc()C中的family返回值。
  • 并包含stdlib.h,不要忘记释放分配的内存。
  • 我原来的程序里有的,我刚才加到这里了。稍后在程序中释放内存。 :-) 我现在将检查 malloc() 链接。谢谢。

标签: c cc minix


【解决方案1】:

MINIX C 编译器不遵循现代标准,这意味着局部变量只能在函数开头声明。

你需要做例如

char *inp;

printf("Welcome to the shell!\n"); 
printf("shell:>");

inp = malloc(20);

当我说“现代”时,我指的是 C99 标准。 MINIX 编译器似乎遵循的旧 C89 标准,以及直到最近的 Visual Studio C 编译器(直到 VS2013 及更高版本才支持大部分 C99),只允许在块的开头声明。

【讨论】:

  • 成功了!谢谢。我完全不知道它曾经是这样工作的。
  • 对于一个的答案,应该指出该标准的哪个修订版引入了“现代”功能。 (其他一些语言的功能早于 c89)。
猜你喜欢
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-22
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
相关资源
最近更新 更多