Eclipse C++ 格式化程序在方法标识符之前放置新行

Posted

技术标签:

【中文标题】Eclipse C++ 格式化程序在方法标识符之前放置新行【英文标题】:Eclipse C++ formatter puts new line before method identifiers 【发布时间】:2012-12-03 08:31:52 【问题描述】:

我遇到了 Eclipse 格式化程序的问题。在类声明中声明方法时,它不会正确格式化我的代码。它在方法的返回类型之后放置一个新行。

我已经导出了样式 xml 文件并检查了其中的设置,但是没有任何设置与这个问题有任何明显的联系,并且 Eclipse 中的设置编辑器在其方法的示例代码中没有显示同样的问题声明。

这是我想要发生的代码示例:

class MyClass

    public:
        MyClass();
        void myMethod();
;

但是,这就是我得到的:

class MyClass

    public:
        MyClass();
        void
        myMethod();
;

同样,在样式编辑器中,代码没有这个问题,看起来就像我想要的那样,但在实际代码中,情况有所不同。

我使用的是 3.8.0 版。任何帮助表示赞赏。

编辑:我删除了那些格式不正确的源文件(在多次格式化代码后无济于事)并将它们替换为具有相同方法,相同结构等的“相同”文件。我这次格式化了代码并有效。这可能是一个错误,但我将其保留以防万一其他人遇到类似问题或有解决方案来避免此问题。

【问题讨论】:

Nsight Eclipse 10.2Eclipse CDT 版本:8.4.0.nvidia-qualifier 八年后出现了类似的问题。以下解决方案(迄今为止)对我不起作用,我在***.com/questions/61257074 发布了一个新问题 【参考方案1】:

我在主eclipse项目目录下手动编辑了两个文件

.metadata\.plugins\org.eclipse.core.runtime\.settings

两个文件:

file 1: org.eclipse.cdt.core.prefs, change this line from "insert" to "do not insert"
 org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration=do not insert


file 2: org.eclipse.cdt.ui.prefs,
scan this file for "insert_new_line_before_identifier_in_function_declaration" and make a similar change from insert to do not insert next to it, should be obvious

注意我在 indigo 和 juno 上看到了这个问题,上面描述的修复是在 juno 中。

【讨论】:

开普勒中的同样问题,用这种技术解决了。为什么这不在“首选项”菜单中? 为什么首选项菜单中没有这个,默认(无故中断)太可怕了。 这在 Luna 中仍然存在。上述修改解决了这个问题。这应该是 Eclipse 中的设置。 你能解释一下如何通过 Eclipse UI 来改变它吗? Mars 中仍然没有 UI 选项。难以置信。【参考方案2】:

如果您有自定义格式化程序配置,请先将其导出(设置>C/C++ 常规>格式化程序>编辑>导出)。然后将以下行更改为“不插入”。保存 XML。

<setting id="org.eclipse.cdt.core.formatter.insert_new_line_before_identifier_in_function_declaration" value="do not insert"/>

删除当前配置并导入您更改的配置。

【讨论】:

你能解释一下如何通过 Eclipse UI 来改变它吗?【参考方案3】:

从 Eclipse 2019-06 中包含的 cdt 9.8 开始,格式化程序选项中有一个特定的首选项。

【讨论】:

以上是关于Eclipse C++ 格式化程序在方法标识符之前放置新行的主要内容,如果未能解决你的问题,请参考以下文章

错误 C2146:语法错误:缺少“;”在标识符 'm_ball' C++、MFC 之前

皮皮君的C++真?第二周总结(之前标题写错了是第一周)

Eclipse 格式化程序没有正确缩进

C++ Eclipse 生成无效的exe

C++大纲及疑惑点二

C++大纲及疑惑点二