CLion 无法解析类型 std::unordered_map 即使它提示我包含标题并且编译工作
Posted
技术标签:
【中文标题】CLion 无法解析类型 std::unordered_map 即使它提示我包含标题并且编译工作【英文标题】:CLion cannot resolve type std::unordered_map even though it prompted me to include the header and the compilation works 【发布时间】:2018-04-08 14:53:59 【问题描述】:由于某种原因,我的 CLion 无法识别 std::unordered_map
,尽管当我第一次写出类型定义时,它实际上建议我将标题包含在 Alt+Enter
中。在我通过#include <unordered_map>
包含标题后,编译也可以正常工作。
我什至可以Ctrl+单击include
行来查找头文件,但我不能单击类型定义行(保持红色)。我不明白为什么 IDE 一直拒绝识别代码中的类型。
实际上,它建议我包含bits/unordered_map.h
。我可以在/usr/include/c++/7.3.1/unordered_map
和/usr/include/c++/7.3.1/bits/unordered_map.h
中找到unodered_map.h
。我不确定这两者有什么区别。包括其中一个或两个都不能解决问题。
我已经在CMakeLists.txt
中将-std=c++11
添加到CMAKE_CXX_FLAGS
。
CLion 2018.1、gcc 7.3.1、Arch Linux。
【问题讨论】:
好的。所以如果你不包含头文件,编译器或编译工具对头文件声明的模板一无所知。嗯,是的,那你还有什么问题? @SamVarshavchik ?也许你可以试着再读一遍?包含头文件后 CLion 一直说它不理解类型定义并一直显示为红色,即使编译成功也是如此,这是没有意义的。 IDE 不是编译器。仅仅因为 IDE 不识别类型并不意味着编译器不会。还;不要期望 IDE 总是达到与 实际 编译器相同的级别 - 它通常不是。 @JesperJuhl 当然。我明白那个。不过,这并不能回答我关于使用 CLion 的问题。该程序编译得很好,但是当我编码时它很烦人。 【参考方案1】:坏消息:这是 CLion issue。
好消息:它已修复。请尝试使用 CLion 2018.1.1 EAP。这个问题应该在里面解决。
这里是相关的problem。
【讨论】:
【参考方案2】:我不了解 CLion,但在使用 TDM-GCC 作为编译器的 Eclipse Luna 中,这些错误通常是由于项目未构建而引起的。还要验证 unordered_map 确实在项目的 /include 文件夹中。 您还可以包含更高的 std 标志,例如 -std=c++14 。
希望这会有所帮助!
【讨论】:
以上是关于CLion 无法解析类型 std::unordered_map 即使它提示我包含标题并且编译工作的主要内容,如果未能解决你的问题,请参考以下文章
当我在 CLion 2020.3 上使用远程工具链时,cmake 无法解析本地路径
CLion开发环境的完全解析(QT开发?STM32?顺便速通cmake