Расширяете макросы для отладки? - PullRequest
0 голосов
/ 04 мая 2018

Я новичок в использовании макрофункций и понимаю, что в их использовании есть некоторые подводные камни, когда речь идет о порядке операций. Есть ли способ развернуть макрос после прохождения препроцессора, чтобы я мог видеть, как он выглядит?

В VS2017 я пробовал Processor> C / C ++> Preprocessor> Preprocess для файла, который создает файл *.i, но его длина составляет около 50 тыс. Строк, и я не могу найти, куда был расширен мой макрос.

edit: Я знаю, что макросы - это плохие новости, однако кодовая база, в которую я вступаю, использует их довольно часто, поэтому я пытаюсь лучше понять их.

1 Ответ

0 голосов
/ 04 мая 2018

В VS2017 я попробовал Processor> C / C ++> Preprocessor> Preprocess для файла, который создает файл * .i, но его длина составляет около 50 тыс. Строк, и я не могу найти, куда был расширен мой макрос.

Вы можете помочь себе, объявив фиктивную переменную перед строкой, в которой используется макрос.

1007 * Е.Г. *

extern int dummyIntVariable;
MY_COMPLICATED_MACRO(arg1, arg2);

После этого вы ищите dummyIntVariable в .i файле. Строка под ней будет содержать то, что MY_COMPLICATED_MACRO расширяется до.

Или, как указал @Sneftel в комментарии, вы можете использовать любую старую строку, которая поможет вам перемещаться по файлу .i.

THIS IS A UNIQUE STRING
MY_COMPLICATED_MACRO(arg1, arg2);

Поскольку файл будет предварительно обработан, он также должен работать.

...