我对下面的代码有疑问。它给我带来了错误,什么也没告诉我。
我有一个文件 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。现在只有一个问题为什么。了解我,我可能在这段代码中吃了后一两个。但我找不到它,也不知道还有什么会导致这个问题。我之前使用的所有其他 automake 命令(包括 ./con..)都没有抛出任何错误。