具有DLL导出规范的C ++类中的emacs缩进不正确

时间:2010-04-05 16:43:44

标签: c++ emacs indentation

我经常使用DLL导出/导入规范编写类,但这似乎混淆了emacs的语法分析器。我最终得到了类似的东西:

class myDllSpec Foo {
 public:
  Foo( void );
};

请注意,“public:”访问规范缩进不正确,以及其后的所有内容。

当我要求emacs描述包含public的行开头的语法时,我得到一个返回:

((label 352))

如果我删除myDllSpec,缩进是正确的,emacs告诉我那里的语法是:

((inclass 352) (access-label 352))

这似乎是正确和合理的。所以我得出结论,语法解析器无法处理DLL导出规范,这就是导致压痕问题的原因。

不幸的是,我不知道如何向解析器讲授我的标签。似乎这是非常普遍的做法,所以我希望有一种解决方法。

1 个答案:

答案 0 :(得分:2)

http://www.emacswiki.org/emacs/IndentingC#toc13开始,您可以设置“微软”风格。

将其放入.emacs

(c-add-style "microsoft"
             '("stroustrup"
               (c-offsets-alist
                (innamespace . -)
                (inline-open . 0)
                (inher-cont . c-lineup-multi-inher)
                (arglist-cont-nonempty . +)
                (template-args-cont . +))))
(setq c-default-style "microsoft")

或保留默认值并通过M-x c-set-style手动将其设置为microsoft

您的示例呈现此缩进:

class myDllSpec Foo {
public:
    Foo( void );
};