我正在使用一个开源库,它似乎有很多预处理指令来支持除C之外的许多语言.这样我就可以研究库正在做什么了我想看看我在预处理后编译的C代码,更像是我写的东西.
gcc(或Linux中常用的任何其他工具)可以读取这个库,但输出的C代码将预处理转换为任何东西并且人类也可以读取吗?
我正在使用eclipse来处理一些c代码,它不是像这样在条件编译块中索引代码:
#ifdef USE_FEATURE_A
int feature_a(...) {
some = code(here);
}
#endif
Run Code Online (Sandbox Code Playgroud)
如何让eclipse索引feature_a函数?
我知道我可以踢预处理器以-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建议或其他建议,请告诉我.
我在互联网上看到了部分解决方案,但没有一个真正让我感到满意:我必须把什么放入我的.vimrc(理想情况下我不想冒任何语法/*.vim文件)这样所有.c/cpp我打开的/ h文件,我自动折叠#ifdef ... #endif部分?
我想在C中隐藏#ifdef和#ifndef块的块.看起来我需要使用Folding模式或Outline小调模式.