Как выяснить, какое значение использует MSVC для препроцессорного макроса
-
20-09-2019 - |
Вопрос
Я пытаюсь использовать опцию компилятора A /D на MSVC6 для определения строки, но есть что -то странное в использовании двойных кавычек вокруг нее. Чтобы отлаживать эту проблему, было бы чрезвычайно полезно, чтобы я мог видеть, какую ценность препроцессор на самом деле заменяет в мой код, где макрос расширяется. Есть ли способ сделать это? Я попытался создать файл листинга с «сборкой и источником», но источник содержит исходное имя макроса, а ASM - какой -то непостижимый тампы на этой строке. Есть ли способ получить значения макроса во время компиляции?
В неудаче это (или, возможно, более полезно), как мне указать строку с опцией /D? Он должен заменить в мой источник двойными цитатами вокруг него, так как я использую его в качестве струнного буквального.
Решение
Попробуйте один из следующих вариантов CL.Exe:
/E preprocess to stdout
/P preprocess to file
Если вы создаете в Visual Studio, вы можете указать пользовательские параметры командной строки в одном из диалогов свойств проекта.
Другие советы
У MSVC есть флаг компилятора, который позволяет вам увидеть предварительно обработанный исходный файл со всеми расширенными макросами, удаленными комментариями и т. Д. - весь блок перевода с точки зрения фактического кода, который будет компилировать. Предварительный выход должен дать вам понимание, которое вы ищете относительно расширения макроса. Больше информации здесь.
Есть возможность передать компилятор (/P
) и написать выход препроцессора в my_cpp_file.i
где вы можете посмотреть на это.