【问题标题】:Incorrect emacs indentation in a C++ class with DLL export specification具有 DLL 导出规范的 C++ 类中的 emacs 缩进不正确
【发布时间】:2010-04-05 16:43:43
【问题描述】:

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

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

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

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

((label 352))

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

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

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

不幸的是,我不知道如何教解析器我的标签。似乎这是很常见的做法,所以我希望有办法解决它。

【问题讨论】:

    标签: c++ emacs indentation


    【解决方案1】:

    您可以从http://www.emacswiki.org/emacs/IndentingC#toc13 设置“microsoft”样式。

    把这个放到你的.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 );
    };
    

    【讨论】:

      猜你喜欢
      • 2010-10-14
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多