我知道我可以用预处理器在特定情况下用-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