ojb*_*ass 9 c vim c-preprocessor
我知道我可以踢预处理器以-E在我的特定情况下使用该选项吐出输出.对于生成的代码,这个预处理器输出是杀气腾腾的.例如,我有一个4gl的应用程序,而Informix将它转换为C,这反过来又吐出了一个可怕的丑陋混乱.
我想要的是一个编辑器,它允许我指定有效的预处理器值,并只显示相关代码.我有一些在Vim的匹配非常基本的工作#ifdef和#endif,但代码是充满了更先进的结构是这样的#ifndef,#if和#else.更糟糕的是,构造在逻辑上更复杂,我认为我的Vim脚本技能不足以让我得到我想要的东西.例如:
#if DLEVEL > 5
#define SIGNAL 1
#if STACKUSE == 1
#define STACK 200
#else
#define STACK 100
#endif
#else
#define SIGNAL 0
#if STACKUSE == 1
#define STACK 100
#else
#define STACK 50
#endif
#endif
#if DLEVEL == 0
#define STACK 0
#elif DLEVEL == 1
#define STACK 100
#elif DLEVEL > 5
display( debugptr );
#else
#define STACK 200
#endif
Run Code Online (Sandbox Code Playgroud)
如果我想解决它,包括定义表达式求值程序.这必须是一个解决的问题!如果您有Vim建议或其他建议,请告诉我.
对于编辑器,Eclipse CDT运行良好.它显示了哪些代码处于活动状态以及哪些代码是#ifdef'ed out,它在代码中提供语法高亮显示#ifdef'ed out,因此您仍然可以轻松读取它,并且如果您使用鼠标,它可以逐步执行宏扩展在宏观上.
从命令行cpp -dM filename.c处理文件并仅显示有效的#defines.例如,在您的代码中,它可能会吐出来
#define DLEVEL 5
#define SIGNAL 1
#define STACK 200
#define STACKUSE 1
Run Code Online (Sandbox Code Playgroud)
不会使用其他预处理程序指令或C/C++代码混淆列表.
(在相关说明中,cpp -dM /dev/null是一种为您的平台查找预定义宏的便捷方法.)
| 归档时间: |
|
| 查看次数: |
2685 次 |
| 最近记录: |