Como descobrir qual valor MSVC está usando para uma macro pré -processadora
-
20-09-2019 - |
Pergunta
Estou tentando usar a opção de compilador A /D no MSVC6 para definir uma string, mas há algo estranho em usar citações duplas em torno dela. Para depurar esse problema, seria extremamente útil para mim poder ver qual valor o pré -processador está realmente substituindo meu código em que a macro é expandida. Existe alguma maneira de fazer isso? Tentei criar um arquivo de listagem com "Assembléia e fonte", mas a fonte contém o nome da macro original e o ASM é um pouco incompreensível bobagem nessa linha. Existe uma maneira de obter o valor macro no momento da compilação?
Falhando nisso (ou talvez mais útil), como especificar uma string com a opção /D? Ele precisa substituir minha fonte por citações duplas, já que estou usando -a como uma string literal.
Solução
Experimente uma das seguintes opções para cl.exe:
/E preprocess to stdout
/P preprocess to file
Se você estiver construindo no Visual Studio, poderá especificar opções de linha de comando personalizadas em uma das caixa de diálogo Projeto Propriedade.
Outras dicas
O MSVC possui um sinalizador do compilador que permite ver o arquivo de origem pré -processado com todas as macros expandidas, comentários removidos etc. - toda a unidade de tradução em termos do código real que será compilado. A saída pré -processada deve fornecer a visão que você está procurando em relação à sua expansão de macro. Mais informações aqui.
Há uma opção para passar para o compilador (/P
) e escreverá a saída do pré -processador em my_cpp_file.i
onde você pode olhar para ele.