V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
liyafe1997
V2EX  ›  C++

有没有 C/C++做 部分预处理 的工具

  •  
  •   liyafe1997 · Jun 29, 2022 · 2241 views
    This topic created in 1406 days ago, the information mentioned may be changed or developed.

    需求大概就是在#define 或者#include 头文件不完整的情况下做预处理,有多少做多少,as much as possible ,缺失的保持原状。

    如果直接用 gcc -E 的话会直接报错,找不到.h 或者相关定义

    有没有什么工具能实现?(除了自己写

    8 replies    2023-05-03 11:05:41 +08:00
    786375312123
        1
    786375312123  
       Jun 29, 2022
    "#define 或者#include 头文件不完整的情况下做预处理,有多少做多少"

    什么意思?你可能对 c++或者编译过程有什么误解?还是说你以前基本没怎么写过 c++?
    liyafe1997
        2
    liyafe1997  
    OP
       Jun 29, 2022
    @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 。
    littlewing
        3
    littlewing  
       Jun 29, 2022
    为什么会有这种奇怪的需求?你想干什么,是否有其他更合适的方法?
    liyafe1997
        4
    liyafe1997  
    OP
       Jun 29, 2022
    @littlewing 目的是把程序尽可能还原成 C/C++本来的样子,以便做下一步工作
    有的人 /公司 /project 大量使用各种千奇百怪的 define 搞各种骚操作,简直 define 出了一种新语言,甚至一套“模板系统”。。。
    liyafe1997
        5
    liyafe1997  
    OP
       Jun 29, 2022
    找到解决方案了,https://pypi.org/project/pcpp/

    这个 C preprocessor 可以做我想要的事情。
    leimao
        6
    leimao  
       Jun 30, 2022
    很多年前写过一个 C Processor 学生项目:
    https://github.com/leimao/Simple_Preprocessor

    但是感觉要满足你的用途也还是需要改代码
    liyafe1997
        7
    liyafe1997  
    OP
       Jun 30, 2022
    @leimao 谢谢,上面那个 pcpp 可以完全满足我的需求
    alqaz
        8
    alqaz  
       May 3, 2023
    有一个我自己用觉得很不错的 https://github.com/fanf2/unifdef.git
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2633 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 11:10 · PVG 19:10 · LAX 04:10 · JFK 07:10
    ♥ Do have faith in what you're doing.