与pp-macros的emacs缩进问题

时间:2011-03-17 13:12:41

标签: emacs

我无法使emacs正确缩进以下代码。不知何故,它无法正确解析预处理器宏。任何建议将不胜感激。

#ifdef WIN32
void func1()
#else
    void func1(int parameter)
#endif
{

    if (a > 2 || 
#ifdef WIN32
        (b < 3))
#else
        (b > 3))
#endif
        c = 1;
        else if (b > 2 || 
#ifdef WIN32
                 (a > 4))
#else
            (a < 4))
#endif
            c = 2;

mystatement;
}

1 个答案:

答案 0 :(得分:1)

问题在于Emacs将解析#if #else构造的两个部分。要获得正确的缩进,您必须确保没有不平衡的括号或大括号。具体来说,您可以重写以下内容:

if (a > 2 ||
#ifdef WIN32
    (b < 3))
#else
    (b > 3))
#endif

分为:

if (a > 2 ||
#ifdef WIN32
    (b < 3)
#else
    (b > 3)
#endif
    )