Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么EclipseCDT代码格式化程序有时会在模板参数中引入空格? 我使用Eclipse 4.12.0和Eclipse CDT 9. 1,我编写C++代码,使用 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; }_C++_Eclipse_Eclipse Cdt_Code Formatting_Stdtuple - Fatal编程技术网

为什么EclipseCDT代码格式化程序有时会在模板参数中引入空格? 我使用Eclipse 4.12.0和Eclipse CDT 9. 1,我编写C++代码,使用 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; }

为什么EclipseCDT代码格式化程序有时会在模板参数中引入空格? 我使用Eclipse 4.12.0和Eclipse CDT 9. 1,我编写C++代码,使用 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; },c++,eclipse,eclipse-cdt,code-formatting,stdtuple,C++,Eclipse,Eclipse Cdt,Code Formatting,Stdtuple,格式化程序在模板尖括号前后引入了空格,就好像我要进行“大于”或“小于”比较一样。这种效果似乎在某种程度上取决于项目。如果它发生在我的project explorer中某个项目的源文件中,则它似乎发生在该项目的每个源文件中。但是,一旦我将这些行粘贴到另一个项目的源文件中,代码格式化程序的行为就正确了(就像上面给出的示例文件一样) 我还没有将此报告为bug,因为我不知道如何使其可复制。有人知道原因是什么吗?我没有启用特定于项目的代码格式化程序设置,因此这不应该是一个简单的配置错误。另外,添加或删除行

格式化程序在模板尖括号前后引入了空格,就好像我要进行“大于”或“小于”比较一样。这种效果似乎在某种程度上取决于项目。如果它发生在我的project explorer中某个项目的源文件中,则它似乎发生在该项目的每个源文件中。但是,一旦我将这些行粘贴到另一个项目的源文件中,代码格式化程序的行为就正确了(就像上面给出的示例文件一样)


我还没有将此报告为bug,因为我不知道如何使其可复制。有人知道原因是什么吗?我没有启用特定于项目的代码格式化程序设置,因此这不应该是一个简单的配置错误。另外,添加或删除行
#include
也没有什么区别。我还可以尝试什么?

这个问题的直接原因几乎可以肯定是Eclipse错误地解析了代码,并且认为
字符实际上是比较运算符,如果在它们周围加空格的话

至于为什么它会错误地解析代码?C++是一种解析的硬语言,CDT的解析器还没有跟上新的C++语言版本(甚至对于旧的C++版本来说,它也没有完全准确)。 “如果它发生在一个项目的源文件中,那么它似乎发生在该项目的每个源文件中”这一事实表明错误解析发生在头文件中,头文件的解析表示被项目中的所有文件共享


如果格式是EclipseCDT的唯一问题,我建议使用。它使用了基于CLAN的格式化程序,它没有正确解析C++的问题。

我不使用Eclipse,但我知道在MSVC中,这实际上是代码格式化的一种选择。你检查过格式选项了吗?@ChrisMM格式选项可以引入空格,但是我已经禁用了。谢谢你的提示。我正在考虑,看。
    std::tuple<int, int> myTuple; // First important line

    std::get < 0 > (myTuple) = 2; // Second important line