我写了这样的示例代码:
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
char* print_errno_msg(int value);
int main(void){
struct stat buffer;
int status;
status = stat("./main.c", &buffer);
char *msg = print_errno_msg(errno); /* syntax error : missing ';' before 'type' */
printf("status = %i; errno = %i; %s\n", status, errno, msg); /* 'msg' : undeclared identifier */
errno = 0;
int ch = getchar(); /* syntax error : missing ';' before 'type' */
return 0;
}
char* print_errno_msg(int value){
static char *messages[] = {
"",
"Operation not permitted",
"No such file or directory",
"No such process"
};
return messages[value];
}
通过gcc在Ubuntu 12.04中编译和执行。我试图通过MS Visual Studio 2012在Windows 8中编译和运行它。我创建了空c ++项目并创建了新文件:main.c.但是我在编译过程中遇到错误(请阅读代码中的注释)。
我不明白错误信息。我的语法不对吗?为什么会这样?
此致
答案 0 :(得分:3)
您正在使用Windows上没有的Unix头文件。
另一件事是VC ++的C编译器仅支持C89。这不允许混合声明和代码。所有声明都必须在范围的开头。