2014-03-19 175 views
0

我有一個導出的類,它使用一個頭只結構作爲成員變量。優雅地禁用警告

#include "SomeStruct.h" 

class API_CLASS SomeClass 
{ 
public: 
// ... 
private: 
#pragma warning(push) 
#pragma warning(disable: 4251) 
    SomeStruct _active; 
#pragma warning(pop) 
}; 

由於結構未導出,所以我得到警告4251。該結構是外部代碼的一部分,而不是當前範圍的一部分。

我想讓這段代碼更具可讀性,因爲這是我將分發的頭文件。 理想情況下,我希望類閱讀

#include "SomeStruct.h" 

class API_CLASS SomeClass 
{ 
public: 
// ... 
private: 
DISABLE_WARNING_BEGIN(4251) 
    SomeStruct _active; 
DISABLE_WARNING_END 
}; 

這可能是更多的工作,以禁用多個警告,但如果是可以做的,那麼偉大的,但沒有必要的。該宏應導致代碼僅適用於WIN32環境。我試圖寫宏,但包含'#'超出了我的意思。

+2

說實話,我不會去那裏...無論如何警告號碼是編譯器特定的,所以你會模糊而不是澄清。對於僅忽略以下行的警告,您可以使用更緊湊的「#pragma warning(suppress:4251)」。 – heinrichj

回答

0

我可以忍受這一點。這比我現在的要好。

#include "SomeStruct.h" 

class API_CLASS SomeClass 
{ 
public: 
// ... 
private: 
#pragma warning(suppress: 4251) 
    SomeStruct _active; 
}; 

由於Heinirichj