Страницы

Поиск по вопросам

понедельник, 8 октября 2018 г.

Знак ## в языке Си

При просмотре алгоритма BlowFish нашел вот такую строчку:
#define S(x,i) (SBoxes[i][x.w.byte##i])
Что означает ##?


Ответ

Это соединение строк.
В данном случае значение параметра макроса "приклеивается" к byte
Допустим, макрос вызвали с параметрами var и 1, то
S(var, 1)
будет заменено препроцессором на
(SBoxes[1][var.w.byte1])
а вызов
S(var, str)
на
(SBoxes[str][var.w.bytestr])
и так далее

Комментариев нет:

Отправить комментарий