LINUX.ORG.RU

чёрт :)

const size_t THRESHOLD   = 2,
             OFFSET_BITS = 12,
             LENGTH_BITS = 4;
      
const size_t DICTIONARY  = (1 << OFFSET_BITS),
             LOOKAHEAD   = (1 << LENGTH_BITS),
             WINDOW      = DICTIONARY + LOOKAHEAD;

anonymous
()
Ответ на: комментарий от anonymous

по моемому const нужно применить к каждой константе, ибо в конкретном случае он относится только к первой. общим для всех определений является только тип.

ну или переопредели тип через typedef

anonymous
()
Ответ на: комментарий от amorphis

Я не профи в Си. Просто не понимаю что тут может не нравится компилеру (http://www.digitalmars.com/download/freecompiler.html), если всё известно на этапе компиляции.

Да хоть крестиком:

const size_t THRESHOLD   = 2;
const size_t OFFSET_BITS = 12;
const size_t LENGTH_BITS = 4;
      
const size_t DICTIONARY  = (1 << OFFSET_BITS);
const size_t LOOKAHEAD   = (1 << LENGTH_BITS);
const size_t WINDOW      = DICTIONARY + LOOKAHEAD;

>dmc -v -A it.c
const size_t DICTIONARY  = (1 << OFFSET_BITS);
                                             ^
unpackit.c(100) : Error: constant initializer expected

anonymous
()
Ответ на: комментарий от anonymous

> Да хоть крестиком:

ну не умеет C так делать, ну и что? это прерогатива C++. зато C умеет например так:

enum {
    THRESHOLD   = 2,
    OFFSET_BITS = 12,
    LENGTH_BITS = 4,
    DICTIONARY  = (1 << OFFSET_BITS),
    LOOKAHEAD   = (1 << LENGTH_BITS),
    WINDOW      = DICTIONARY + LOOKAHEAD
};

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

О, спасибо.

То есть const говорит только о том, что объект нельзя изменять, а не о константе?

anonymous
()
Ответ на: комментарий от anonymous

> То есть const говорит только о том, что объект нельзя изменять, а не о константе?

да, о чем явно написано в стандарте на язык C.

// wbr

klalafuda ★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.