Программирование AVR Обработка препроцессором языка C символов # и ## Sun, May 05 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

Обработка препроцессором языка 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.

 

Добавить комментарий


Защитный код
Обновить

Top of Page