编译器看不到的常量

标签 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..)都没有抛出任何错误。

最佳答案

和我想的一样愚蠢的错误。我只需要换行:

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

没有像有人建议的那样遗漏引号,只是简单的 _ 到很多。 无论如何,感谢您的帮助。

关于编译器看不到的常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15626934/

相关文章:

makefile - Make 受欢迎的原因 vs. 替代品

c - RTP header C 编程

c - 子 PID 的执行和打印

c - 这里有什么逻辑错误吗?

c++ - Makefile 条件语句

c++ - 我的 Makefile 或 C++ 程序有什么问题?

iphone - iPhone上的FFmpeg运行错误 'make'

mysql - Sesame 配置了 MySql 支持

linux - 如何提供Qt安装路径进行配置?

c - malloc 调用的静态替换