,在編譯使用與IDE分佈的TeeChart組件下的CBuilder XE8一個項目,我得到的錯誤的長裏姆斯這樣的:不需要W8080警告
[bcc32 Warning] GdiplusStringFormat.h(306): W8058 Cannot create pre-compiled header: initialized data in header
[bcc32 Warning] MI3Proc.cpp(719): W8080 'Gdiplus::FlatnessDefault' is declared but never used
[bcc32 Warning] MI3Proc.cpp(719): W8080 'Gdiplus::GenericSansSerifFontFamily' is declared but never used
[bcc32 Warning] MI3Proc.cpp(719): W8080 'Gdiplus::GenericSerifFontFamily' is declared but never used
[bcc32 Warning] MI3Proc.cpp(719): W8080 'Gdiplus::GenericMonospaceFontFamily' is declared but never used
[bcc32 Warning] MI3Proc.cpp(719): W8080 'Gdiplus::GenericSansSerifFontFamilyBuffer' is declared but never used
[bcc32 Warning] MI3Proc.cpp(719): W8080 'Gdiplus::GenericSerifFontFamilyBuffer' is declared but never used
[bcc32 Warning] MI3Proc.cpp(719): W8080 'Gdiplus::GenericMonospaceFontFamilyBuffer' is declared but never used
[bcc32 Warning] MI3Proc.cpp(719): W8080 'Gdiplus::GenericTypographicStringFormatBuffer' is declared but never used
[bcc32 Warning] MI3Proc.cpp(719): W8080 'Gdiplus::GenericDefaultStringFormatBuffer' is declared but never used
另據報道這個問題在Steema的支持論壇http://www.teechart.net/support/viewtopic.php?f=3&t=15374,但沒有後續。
我在CBuilder 4下有類似TeeChart的問題(類似20年前!)。嗯。
我不想在項目範圍內關閉W8080警告,因爲它有助於保持我的代碼清潔,但有什麼辦法可以關閉TeeChart單元的警告嗎?
此外,我不知道什麼W8058錯誤。 #pragma hdrstop
位於VclTee.TeeGDIPlus.hpp
的前面,所以不應出現此錯誤。
編輯: 我發現一些更多的信息是有問題的變量是靜態/ const的全局變量和宣佈,以GdiplusEnums.h和GdiplusHeaders.h(文版權所有2001年由微軟)初始化。
暫時禁用8080警告不起作用,因爲嵌套鏈中的某處包含8080警告被重置爲默認值。如果在調用編譯器(即全局選項)時禁用了8080警告,則所有8080警告都將停止,但您不會發現自己的錯誤。即使將整個CPP單元放在#pragma warn -8080
塊中也不會阻止警告!
我發現停止警告(沒有全局禁用8080警告)的唯一方法是在每個受影響的源單元中放置類似這樣的虛擬代碼(以便變量被引用)。
void *pvDummy;
double dDummy;
BYTE *pBYTEDummy;
dDummy = Gdiplus::FlatnessDefault;
pvDummy = Gdiplus::GenericSansSerifFontFamily;
pvDummy = Gdiplus::GenericSerifFontFamily;
pvDummy = Gdiplus::GenericMonospaceFontFamily;
pBYTEDummy = Gdiplus::GenericSansSerifFontFamilyBuffer;
pBYTEDummy = Gdiplus::GenericSerifFontFamilyBuffer;
pBYTEDummy = Gdiplus::GenericMonospaceFontFamilyBuffer;
pBYTEDummy = Gdiplus::GenericTypographicStringFormatBuffer;
pBYTEDummy = Gdiplus::GenericDefaultStringFormatBuffer;
包含此代碼具有爲處於的#pragma方法警告-8004塊,以避免警告約「XXX被分配是從未使用過的值」。哎呀。使用#pragma warn
指令
這確實得罪良好的編碼風格一定意義,但你去那裏...
根據我的經驗,W8058絕不應該在它應該在的地方。這通常意味着在別的地方,你正在聲明一些數據。有些時候,它顯示在默認的字符串參數中,或類似的東西在其他頭文件中工作正常(即不會產生此警告)。我*從未*看到它指出問題出在哪裏,通常甚至不在正確的標題中。您可以嘗試在「罪魁禍首」標題前註釋#includes,看看它是否停止,然後查找擴展常量的實例,至少對我來說通常會導致問題。 –