需求大概就是在#define 或者#include 头文件不完整的情况下做预处理,有多少做多少,as much as possible ,缺失的保持原状。
如果直接用 gcc -E 的话会直接报错,找不到.h 或者相关定义
有没有什么工具能实现?(除了自己写
1
786375312123 2022-06-29 19:00:57 +08:00
"#define 或者#include 头文件不完整的情况下做预处理,有多少做多少"
什么意思?你可能对 c++或者编译过程有什么误解?还是说你以前基本没怎么写过 c++? |
2
liyafe1997 OP @786375312123
不考虑编译,只考虑预处理。 打个比方,比如我的程序里有: #define aaa 10 #define bbb 20 int a = aaa; int b = bbb; 预处理器会生成: int a = 10; int b = 20; 我需要的是,在缺失定义或者头文件的情况下,比如: #define bbb 20 int a = aaa; int b = bbb; 预处理后生成 int a = aaa; int b = 20; 如果用现有的编译器的预处理器,比如 gcc -E ,会直接报错,找不到 aaa 。 |
3
littlewing 2022-06-29 19:54:58 +08:00
为什么会有这种奇怪的需求?你想干什么,是否有其他更合适的方法?
|
4
liyafe1997 OP @littlewing 目的是把程序尽可能还原成 C/C++本来的样子,以便做下一步工作
有的人 /公司 /project 大量使用各种千奇百怪的 define 搞各种骚操作,简直 define 出了一种新语言,甚至一套“模板系统”。。。 |
5
liyafe1997 OP |
6
leimao 2022-06-30 08:40:49 +08:00
|
7
liyafe1997 OP @leimao 谢谢,上面那个 pcpp 可以完全满足我的需求
|
8
alqaz 2023-05-03 11:05:41 +08:00
有一个我自己用觉得很不错的 https://github.com/fanf2/unifdef.git
|