2017-08-04 64 views
-3

我正在使用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:將問題重命名爲更有用的東西

+0

讓我看看代碼。 –

+0

你是否在Pins.hpp中添加了一個include guard?如果代碼編譯,請在https://youtrack.jetbrains.com/issues?q=project:%20%7BReSharper%20C%2B%2B%7D中創建問題,並且ReSharper團隊將嘗試提供幫助。 –

+0

是的,我正在使用'#pragma once'。 – Damowerko

回答

1

原因ReSharper調查整個VS解決方案,而不僅僅是項目。由於在我的解決方案中,我有一些包含相同庫的項目,但是來自不同的位置。因此ReSharper無法解析名稱。

解決方案很簡單:確保所有項目都包含相同的文件。

+0

我仍然不明白爲什麼R ++會顯示錯誤。您能否創建一個repro解決方案,ReSharper團隊會看看? –

相關問題