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

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

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

Ответы [ 3 ]

3 голосов
/ 27 августа 2009

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

/E preprocess to stdout
/P preprocess to file

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

1 голос
/ 27 августа 2009

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

1 голос
/ 27 августа 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...