Что неправильно?
От: Аноним  
Дата: 10.02.04 18:50
Оценка:
1:
Есть такой код:
#define MEM_RESERV_SIZE 32767

static void *MemBuf = NULL;
static unsigned int MemBufPos = 0;

void MemReservStart(void)
{
    if (!MemBuf) MemBuf = XMalloc(MEM_RESERV_SIZE);
}

void MemReservEnd(void)
{
    XFree(XMemBuf);
}

void *MemReservAlloc(unsigned int size)
{
    if (!MemBuf || (MemBufPos += size) > MEM_RESERV_SIZE) exit(EXIT_FAILURE);
    return MemBuf + MemBufPos - size;
}

В функции MemReservAlloc() компилятор ругается на return MemBuf + MemBufPos — size:
"error: expression must be a pointer to a complete object type return XMemBuf + XMemBufPos — size"
В чём может быть причина и как это исправить?
2:
Функция:
XMemFree(void **point, const char *file, unsigned int line)

вызывается через такую конструкцию:
#define XFree(point) XMemFree(&((void *)(point)), __FILE__, __LINE__)

При компиляции как C-код всё нормально, а как С++ код выдаёт ошибку:
"error: expression must be an lvalue or a function designator".
В чём может быть причина и как это исправить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.