我正在使用Resharper C++與Visual Studio,並且由於顯而易見的名稱空間衝突而出現ambigous符號錯誤。例如,當我想實例化一個枚舉模式時,我在Sd.cpp中出現這個錯誤。Visual Studio Intellisense + Resharper在包含相同頭文件兩次時會拋出ambigous符號錯誤
枚舉類模式在Pins.hpp中定義,它包含在Sd.hpp中。但是,如果我在Sd.ccp中包含Pins.hpp,則會出現ambigous符號錯誤彈出窗口。編譯項目沒有問題。
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中添加了一個include guard?如果代碼編譯,請在https://youtrack.jetbrains.com/issues?q=project:%20%7BReSharper%20C%2B%2B%7D中創建問題,並且ReSharper團隊將嘗試提供幫助。 –
是的,我正在使用'#pragma once'。 – Damowerko