0

この helloworld の例をコンパイルすると、次のエラーが 4 回繰り返されます。

error: expected primary-expression before ‘.’ token

コードは次のとおりです。

static struct fuse_operations hello_oper = {
    .getattr    = hello_getattr,
    .readdir    = hello_readdir,
    .open   = hello_open,
    .read   = hello_read,
};

int main(int argc, char *argv[])
{
    return fuse_main(argc, argv, &hello_oper);
}
4

4 に答える 4

1

コンパイラが古すぎます。C99 をサポートする必要があります。コンパイラが最新の場合は -std=c99 を渡します

于 2011-11-09T04:56:42.737 に答える
0

その構文は、指定された初期化子と呼ばれるC99 言語標準の新しい機能を使用しています。この機能は、より一般的な C89 標準 (別名 ANSI C) の一部ではないため、C89 コンパイラは、それを使用するコードをコンパイルしようとすると構文エラーを返します。

これを修正するには、コンパイラに C99 モードがある場合はそれを使用するように指示します。たとえば、GCC を使用している場合は、-std=c99コンパイラ オプションを渡す必要があります。コンパイラが C99 をまったくサポートしていない場合は、サポートしているコンパイラに切り替えるか、コードをリファクタリングして C99 機能を使用しないようにする必要があります。

于 2011-11-09T05:39:59.610 に答える
0

実際、gccC (または C++) の新しい方言をサポートします。渡してみるgcc -std=c99 -Wall

于 2011-11-09T05:40:23.083 に答える