编译器看不到的常数

时间:2013-03-25 23:48:55

标签: c makefile configure automake

我的代码存在问题。它抛出了我的错误,告诉我什么。

我有一个文件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 ..)都没有抛出任何错误。

1 个答案:

答案 0 :(得分:0)

像我想的那样愚蠢的错误。我只需改变界限:

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

有人建议没有丢失引号,但只是简单_很多。 无论如何,谢谢你的帮助。