如何查看.cpp文件的宏处理结果?适配g++与MSVC编译器
如何展开C++代码中的宏定义并生成完整.cpp文件
使用g++(GCC编译器)
直接调用预处理器完成宏展开,生成无宏的代码文件:
- 生成干净的展开后代码(去掉预处理器行号标记):
参数说明:g++ -E -P -o output.cpp input.cpp-E:仅执行预处理器步骤,跳过编译、汇编等后续流程-P:移除预处理器生成的#line行号注释,让输出更整洁-o output.cpp:指定最终生成的文件路径
- 保留原始行号(方便对应原代码位置):
去掉-P参数即可:g++ -E -o output.cpp input.cpp
使用MSVC(微软编译器)
通过cl.exe的预处理器选项实现宏展开:
- 生成带完整展开内容的文件:
参数说明:cl /E /P input.cpp /Fooutput.cpp/E:启动预处理器并输出结果/P:将预处理器结果写入文件而非标准输出/Fooutput.cpp:指定输出文件路径(若省略,默认生成input.i文件)
- 保留行号并输出到指定文件:
cl /E input.cpp > output.cpp
注意事项
- 宏展开后可能出现大量重复代码,这是库中宏封装的正常结果
- 若代码包含条件编译(如
#ifdef),需确保编译选项与原库的编译环境一致,否则展开结果可能不符合预期 - 预处理器会自动展开所有
#include引入的头文件内容,最终输出文件会包含所有依赖的头代码
内容的提问来源于stack exchange,提问作者Felix F Xu
相关产品推荐
相关产品推荐

