Подтвердить что ты не робот

Что означают два смежных знака фунта в макросе C?

Я рассматриваю приложение, которое определяет большой набор постоянных массивов. Что меня действительно смущает, так это использование двух фунтовых знаков рядом друг с другом в макросе. Например:

#define r0(p,q,r,s) 0x##p##q##r##s

Что означают эти два знака фунта?

4b9b3361

Ответ 2

## объединяет символы. Например, если значение p равно ab, 0x##p станет 0xab.

Ответ 3

Als и sepp2k дают правильный ответ.

Однако я хотел бы добавить, что этот макрос кажется совершенно ненужным.

unsigned int value = r0(b,e,a,f);

можно заменить лучше и короче:

unsigned int value = 0xbeaf;