我遇到了一个Eclipse格式化程序的问题。当在类声明中声明方法时,它不能正确地格式化我的代码。它在方法的返回类型后面放了一个新行。
我已经导出了样式xml文件并检查了其中的设置,但是没有一个设置与这个问题有任何明显的联系,Eclipse中的设置编辑器没有显示在方法声明的示例代码中发生的相同问题。
下面是一段代码的例子,我想让它发生:
class MyClass
{
public:
MyClass();
void myMethod();
};
然而,这就是我得到的:
class MyClass
{
public:
MyClass();
void
myMethod();
};
同样,在样式编辑器中,代码没有这个问题,看起来就像我想要的那样,但在实际代码中,情况有所不同。
我使用的是3.8.0版本。任何帮助都很感激。
编辑:我删除了那些格式不正确的源文件(在格式化代码几次都没有用之后),并用具有相同方法,相同结构等的“相同”文件替换它们。这次我格式化了代码,它工作了。这可能是一个错误,但我把它留了下来,以防其他人遇到类似的问题,或者有一个解决方案来避免这个问题。
4条答案
按热度按时间camsedfj1#
我手工编辑了主Eclipse项目目录下的两个文件
这两个文件:
注意我在靛蓝和juno上看到了这个问题,上面描述的修复是在juno上。
sycxhyv72#
如果你有一个自定义的格式化程序配置,首先导出它(设置〉C/C++常规〉格式化程序〉编辑〉导出)。然后将下面的行更改为“不插入”。保存XML。
删除当前配置并导入您更改的配置。
vc6uscn93#
从Eclipse 2019-06中包含的cdt 9.8开始,格式化程序选项中有一个特定的首选项。
bf1o4zei4#
其他人已经充分解释了如何解决这个问题,但这留下了一个问题,为什么默认情况下插入换行符。
在函数名前换行是C语言中一个非常悠久的传统,一些常用的工具依赖于它。
例如,
vi
及其衍生版本都有一个键盘快捷键ctrl+],用于“跳转到定义”,它使用了一个外部交叉引用列表,该列表由ctags
程序生成,而ctags
的许多版本都依赖于位于左边距的C函数名。事后看来,在处理C++时,这应该从一开始就被禁用,因为有太多的方面不同。
特别是,在类内部的方法名之前的换行符用处不大,因为它们是缩进的,不会被
ctags
和其他工具识别。更糟糕的是,在不是定义的声明上的换行符完全没用,因为它们分散了查找实际定义的注意力。