首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有什么治疗前处理忧郁症的方法吗?

有什么治疗前处理忧郁症的方法吗?
EN

Stack Overflow用户
提问于 2009-04-11 00:17:33
回答 6查看 2.9K关注 0票数 10

我知道,在特定的情况下,我可以启动预处理器,使用-E选项输出输出。对于生成的代码,这个预处理器输出是致命的。例如,我有一个4gl应用程序,Informix将其转换为C,而后者又会被抛出一个可怕的烂摊子。

我想要的是一个编辑器,它允许我指定有效的预处理器值,并且只向我展示相关的代码。我在Vim匹配#ifdef#endif中有一些非常基本的工作,但是代码中充斥着更高级的结构,比如#ifndef#if#else。更糟糕的是,构造在逻辑上更加复杂,我认为我的Vim脚本技能不足以让我从它中得到我想要的东西。例如:

代码语言:javascript
复制
#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

包括定义表达式计算器(如果我想要处理它)。这一定是个解决了的问题!如果您有Vim的建议或其他建议,请告诉我。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-04-11 00:21:40

Eclipse编辑器非常好地根据声明为活动的宏突出显示代码。你可能想去看看。

票数 15
EN

Stack Overflow用户

发布于 2009-04-11 01:11:20

对于一个编辑来说,月食CDT工作得很好。它显示了哪些代码是活动的,哪些代码是#ifdef‘’ed的,它在#ifdef‘’ed的代码中提供了语法高亮显示,这样您仍然可以轻松地读取它,并且如果您在宏上鼠标鼠标,它可以一次完成一个宏展开。

在命令行中,cpp -dM filename.c处理一个文件,并且只显示有效的#定义。例如,在您的代码中,它可能会吐出来。

代码语言:javascript
复制
#define DLEVEL 5
#define SIGNAL 1
#define STACK 200
#define STACKUSE 1

在不将清单与其他预处理器指令或C/C++代码混淆的情况下。

(与此相关,cpp -dM /dev/null是为您的平台查找预定义宏的一种方便的方法。)

票数 6
EN

Stack Overflow用户

发布于 2009-04-11 02:08:28

考虑看看是否有C预处理器根据定义/未定义的值消除#ifdef块?的答案中引用的“Unifdef之子”。这不是一个可视化编辑器-但是,它将使用C代码(或在其中包含C预处理程序指令的代码)并生成一个修改后的文件,然后您可以将其与原始文件进行比较。

我对Informix4GL (I4GL)的提及感到好奇。它生成的C代码不是带有#ifdef结构的AFAIK。至少,在我负责的时候,输出是不允许包含的。(您使用的是哪个版本的I4GL?)有许多#line条目;这些条目允许您将生成的代码追回相应的I4GL源。我有一个脚本可以将这些转换成简单的C注释,这样我就可以使用调试器(gdbdbx或.破坏了编译代码上的思想( sdbadb)。我还看到了用于生成cpp源代码以提交给I4GL编译器的预处理程序(包括I4GL和m4)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/739230

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档