【发布时间】:2017-08-04 15:58:06
【问题描述】:
我正在将 Resharper C++ 与 Visual Studio 一起使用,但由于明显的命名空间冲突,我收到了一个模棱两可的符号错误。例如,当我想实例化枚举模式时,我在 Sd.cpp 中收到此错误。
枚举类Mode定义在Pins.hpp中,包含在Sd.hpp中。但是,如果我在 Sd.ccp 中包含 Pins.hpp,则会弹出模棱两可的符号错误。编译项目没有问题。
Resharper / Intellisense 是否无法识别 Pins.hpp 是同一个文件? #pragma once 的工作方式是文件路径,所以我不知道会发生什么。
我最近更改了包含目录,所以这可能与问题有关。
任何帮助将不胜感激。
Sd.hpp
#include "Pins.hpp"
Sd.cpp
#include "Pins.hpp"
Mode mode; //error here, Mode is underlined
Pins.hpp
enum class Mode : uint32_t
{
AlternatePushPull = GPIO_MODE_AF_PP,
};
EDIT1:添加了代码。 EDIT2:将问题重命名为更有用的东西
【问题讨论】:
-
显示代码。
-
您是否在 Pins.hpp 中添加了包含保护?如果代码编译成功,请在youtrack.jetbrains.com/… 中创建问题,ReSharper 团队会尽力提供帮助。
-
是的,我正在使用
#pragma once。 -
而#pragma once 是在 Reshaper 中定义的?我不记得它在标准中。
-
从 resharper 2016.2 变更日志:如果头文件缺少包含保护,ReSharper C++ 现在会警告您,并将提供修复以自动添加 #pragma once 指令。因此,是的,@Surt。
标签: c++ visual-studio visual-c++