2

以下のコードに問題があります。それは私に何も言わないエラーを投げます。

私はファイルmemory.hを持っています。

#ifndef BLOCK_SIZE
#define BLOCK_SIZE 8
#endif

以下のようにフラグメントを含むconfiguration.acファイルもあります。

AC_ARG_WITH([block-size],
    [AS_HELP_STRING([--with-block-size],["Define blocksize to initialize with. Default value: 8]")],
        [bsize="$withval"],
        [])

if test ! -z "${bsize}"; then
        if test  "${bsize}" > 0 ; then
                AC_DEFINE_UNQUOTED([BLOCK_SIZE], [$b_size], [Defining block size in bytes])
        else
                AC_DEFINE_UNQUOTED([BLOCK_SIZE], [8], [Default block size : 8B])
        fi
fi

その後、コマンド./configure --with-block-size=16 --with-allocator=STR_MINを使用してmakefileの作成を完了しました。しかし今、私はmakeコマンドを使用すると、多くのエラーが発生します:

memory.c: In function 'initialize':
memory.c:15:59: error: expected expression before ')' token
memory.c: In function 'allocate':
memory.c:26:41: error: expected expression before ')' token
memory.c:53:56: error: expected expression before ';' token
memory.c: In function 'defragment':
memory.c:140:73: error: expected expression before ')' token
memory.c: In function 'diagnoze':
memory.c:174:183: error: expected expression before ',' token

エラーのあるすべての行は次のようになります。

mem -> unused_list -> address = malloc(count * BLOCK_SIZE);
new -> address = space -> address + size * BLOCK_SIZE;

コンパイラはBLOCK_SIZEをまったく認識していないようです。さて、なぜかという疑問があります。私を知っていると、私はおそらくこのコードで後者を1つか2つ食べたことがあるでしょう。しかし、私はそれを見つけることができず、これ以上この問題を引き起こす可能性があるものの手がかりがありません。以前に使用したautomakeの他のすべてのコマンド(./con ..を含む)はエラーをスローしませんでした。

4

1 に答える 1

0

思ったほどバカな間違い。行を変更する必要がありました:

AC_DEFINE_UNQUOTED([BLOCK_SIZE], [$bsize], [Defining block size in bytes])

誰かが提案したように引用符の欠落はありませんでしたが、単純な_から多くの場合です。とにかく助けてくれてありがとう。

于 2013-03-26T01:24:06.520 に答える