Обработка препроцессором языка C символов # и ## |
![]() |
Добавил(а) microsin |
Понимание кода с макросами всегда довольно трудоемкий процесс, особенно когда в них появляются # (подстановка строки) и ## (конкатенация строк). Оператор #. Порция символов за символом '#' напрямую подставляется в код программы. Например, если определен макрос: #define TXT_TO_STRING(x) #x
.. то появление в коде выражения TXT_TO_STRING(foo) будет аналогично текстовой строке "foo": TXT_TO_STRING(foo) // это будет заменено на "foo"
Оператор ##. Это оператор слияния текста в коде. Он часто используется в макросах для синтеза имен переменных из аргументов макроса. Например, если определен макрос: #define MACRO(abc, def) {#def ## #abc}
.. то строка char result[10] = MARCO(DEAD, BEEF); .. будет эквивалентна следующему коду: char result[10] = "BEEFDEAD"; [Ссылки] 1. What does the # and ## means in C preprocessor macro of c++ site:stackoverflow.com. |