0

私はそのようなサンプルコードを書きました:

#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 を作成しました。しかし、コンパイル プロセスでエラーが発生します (コード内のコメントを読んでください)。

エラーメッセージがわかりません。私の構文は正しくありませんか?なぜそれが起こったのですか?

よろしく

4

1 に答える 1

3

Windows では使用できない Unix ヘッダー ファイルを使用しています。

もう 1 つのことは、VC++ の C コンパイラが C89 しかサポートしていないことです。これにより、宣言とコードを混在させることはできません。すべての宣言は、スコープの先頭にある必要があります。

于 2012-09-30T15:23:20.373 に答える