【发布时间】:2020-03-04 00:23:41
【问题描述】:
我正在使用 Eclipse 4.12.0 和 Eclipse CDT 9.8.1,并且我正在编写使用 std::tuple 的 C++ 代码。有时代码格式化程序会在我检索元组条目的代码中引入额外的空格。
请考虑以下示例文件:
#include <tuple>
int main(int, char**)
{
std::tuple<int, int> myTuple; // First important line
std::get<0>(myTuple) = 2; // Second important line
return 0;
}
我在这里粘贴了 Eclipse 格式化的代码。在这个例子中一切都很好。但是,当我将 cmets 标记为重要的两行复制并粘贴到我项目的另一个 .cpp 文件中并格式化它们时,结果是这样的:
std::tuple<int, int> myTuple; // First important line
std::get < 0 > (myTuple) = 2; // Second important line
格式化程序在模板尖括号前后引入了空格,就好像我要进行“大于”或“小于”比较一样。这种效果似乎在某种程度上取决于项目。如果它发生在我的项目资源管理器中一个项目的源文件中,它似乎发生在该项目的每个源文件中。但是,只要我将这些行粘贴到 another 项目的源文件中,代码格式化程序的行为就会正确(就像上面给出的示例文件一样)。
我没有将此报告为错误,因为我不知道如何使其可重现。有谁知道可能是什么原因?我没有启用项目特定的代码格式化程序设置,因此它不应该是一个简单的配置错误。此外,添加或删除行 #include <tuple> 并没有什么不同。我还能尝试什么?
【问题讨论】:
-
我不使用 Eclipse,但我知道在 MSVC 中这实际上是代码格式化的一个选项。你检查过格式选项吗?
-
@ChrisMM 存在用于引入空格的格式选项,但我已禁用它们。
标签: c++ eclipse eclipse-cdt code-formatting stdtuple