아래 코드에 문제가 있습니다. 그것은 나에게 아무것도 알려주지 않는 오류를 던졌습니다.컴파일러가 볼 수없는 상수
#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
을 사용
나는 내가 가진 파일 memory.h이 . 오류는 다음과 같습니다과
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 표시되지 않습니다하지만 지금 ehen 나는 오류의 책을 얻을 make
명령을 사용합니다. 이제는 왜 그럴까요? 이 코드에서 후자를 아마도 먹었을 것입니다. 그러나 나는 그것을 발견 할 수 없어 더 많은 문제가 발생할 수있는 단서가 없습니다. 이전에 사용한 automake의 다른 모든 명령 (./con .. 포함)은 오류를 발생시키지 않았습니다.
@Dcortez .. 헤더 파일에 재 지정이 적용되지 않도록 보호되어 있습니까? – Ganesh
'#ifndef _MEMORY_H #define _MEMORY_H some code # endif' – Dcortez
@Dcortez ..'memory.c'는'memory.h'를 포함하고'make'를 통해'make' 파일 구조의 일부로 사용할 수 있습니다. -I' 옵션. 이 경우인지 확인할 수 있습니까? – Ganesh