Size: a a a

2020 April 20

G

GoodBye in pro.cxx
?
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Да
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Да
та же ошибка
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
В примере по ссылке (X), потому что там возвращается имя функции
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
В примере по ссылке (X), потому что там возвращается имя функции
Да, это я уже понял
источник

G

GoodBye in pro.cxx
Хотя ошибка осталась прежней, функцию я проверил. Отдельно заполнил ее руками, всё работает
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
М, написано, что после : идет expression. Я не думаю, что определение функции это expression
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Не уверен, что проблема в этом
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
GoodBye
Да, уже разобрался. Хотя по всей видимости я снова делаю что-то не так

Код:
https://pastebin.com/GvG2K1Zx

Ошибка:
https://pastebin.com/E0rE1Cuk
Комментариии нельзя ставить посреди макроса, потому что вся его оставшаяся часть считается комментарием
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Вот почти рабочая версия, осталось спецификаторы доделать https://wandbox.org/permlink/L0OezRMBpbwkNgBs
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Советую это сделать так же, как я сделал MM_IS_SIGNED_
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Также обрати внимание на (T)0 на строке 103, там требуется выражения, а не просто тип, как у тебя было
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Советую это сделать так же, как я сделал MM_IS_SIGNED_
Я бы сделал так, но в зависимости от того, знаковый он или нет я использую int64_t/uint64_t
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
М, вижу. Тогда по подобию MM_IS_SIGNED_ сделай выбор int64_t или uint64_t
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
М, вижу. Тогда по подобию MM_IS_SIGNED_ сделай выбор int64_t или uint64_t
Причем с тернарным оператором не вышло =(
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Аргументы тернарной операции тоже выражения, не типы
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
М, вижу. Тогда по подобию MM_IS_SIGNED_ сделай выбор int64_t или uint64_t
Немного не понял, как ты себе это представил.

я сделал так
#define CHOICE_MAX_TYPE(T) _Generic( (T)0, \
                           int8_t: int64_t, \
                           int16_t: int64_t, \
                           int32_t: int64_t, \
                           int64_t: int64_t, \
                           uint8_t: uint64_t, \
                           uint16_t: uint64_t, \
                           uint32_t: uint64_t, \
                           uint64_t: uint64_t \
                       )
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
Именно так
источник

G

GoodBye in pro.cxx
Artöm Bakri Al-Sarmini
Именно так
test.c:102:37: error: expected expression before ‘int64_t’
 102 |                             int8_t: int64_t, \
источник

AB

Artöm Bakri Al-Sarmini in pro.cxx
источник