странное макрострукция - PullRequest
0 голосов
/ 19 апреля 2011

Я нашел этот макрос в исходном коде c, который сейчас портирую:

#define Round256(p0, p1) \
X##p0 += X##p1;

В этом коде нет переменной X .Кто-нибудь может сказать мне, что символ # делает в этом контексте?

Ответы [ 3 ]

3 голосов
/ 19 апреля 2011

## текстуально добавляет две строки вместе.

Таким образом, в вашем примере, если вызывается следующим образом:

Round256(one, two)

будет переведено в:

Xone += Xtwo;
2 голосов
/ 19 апреля 2011

Макрос просто переводит значения в строку

Предположим, так оно и называлось

Round256(1,2)

Это будет расширено препроцессором как

X1 += X2

Который где-то напоминает переменную X1 ... n ....

## объединяет строковые значения вместе.

Причина, по которой я использовал числовые значения, заключается в названии самого макроса.

1 голос
/ 19 апреля 2011

## - оператор вставки.Он связывает X (буквально) и каждое значение.Так, например, Round256(one, two) будет преобразовано в Xone += Xtwo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...