Как выяснить, какое значение использует MSVC для препроцессорного макроса

StackOverflow https://stackoverflow.com/questions/1342158

Вопрос

Я пытаюсь использовать опцию компилятора A /D на MSVC6 для определения строки, но есть что -то странное в использовании двойных кавычек вокруг нее. Чтобы отлаживать эту проблему, было бы чрезвычайно полезно, чтобы я мог видеть, какую ценность препроцессор на самом деле заменяет в мой код, где макрос расширяется. Есть ли способ сделать это? Я попытался создать файл листинга с «сборкой и источником», но источник содержит исходное имя макроса, а ASM - какой -то непостижимый тампы на этой строке. Есть ли способ получить значения макроса во время компиляции?

В неудаче это (или, возможно, более полезно), как мне указать строку с опцией /D? Он должен заменить в мой источник двойными цитатами вокруг него, так как я использую его в качестве струнного буквального.

Это было полезно?

Решение

Попробуйте один из следующих вариантов CL.Exe:

/E preprocess to stdout
/P preprocess to file

Если вы создаете в Visual Studio, вы можете указать пользовательские параметры командной строки в одном из диалогов свойств проекта.

Другие советы

У MSVC есть флаг компилятора, который позволяет вам увидеть предварительно обработанный исходный файл со всеми расширенными макросами, удаленными комментариями и т. Д. - весь блок перевода с точки зрения фактического кода, который будет компилировать. Предварительный выход должен дать вам понимание, которое вы ищете относительно расширения макроса. Больше информации здесь.

Есть возможность передать компилятор (/P) и написать выход препроцессора в my_cpp_file.i где вы можете посмотреть на это.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top