При просмотре алгоритма 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])
и так далее
Комментариев нет:
Отправить комментарий