簡體   English   中英

VC ++ 2010:用/ Wall編譯

[英]VC++ 2010: Compiling with /Wall

我想用/ Wall編譯我的項目。

當我這樣做時,我從第三方代碼(boost庫,其他系統頭文件)得到大量警告。 我包含這些第三方頭文件的唯一地方是在我的預編譯頭文件( stdafx.h )中。

我試過這個(在stdafx.h

#pragma warning(push,3)
    // include all the third-party headers here
#pragma warning(pop)

編譯警告級別為3的所有第三方代碼。

但是我仍然從math.hxmemoryvectorstring_generator.hpp (boost.uuid), placeholders.hpp (boost.asio)等文件中收到數百條警告。

如何在啟用所有警告的情況下編譯自己的代碼時,如何確保編譯警告級別為3的所有第三方代碼?

第三方代碼的修改頻率較低,因此最好將所有這些包含在您的StdAfx.h中,然后您的上述解決方案將禁止其警告。

或者創建一些其他包裝器頭文件,使用上面的pragma圍繞實際包含到您使用的庫。

我想不出第三種方式。 我推說他們都在stdafx( 以及他們實際上是包括在內,也記得stdafx是一種優化-不仔細選擇的替代品,包括你的源文件中)

/ W4比/ Wall更逼真。 我經常使用帶/ W4的stl,tr1和windows標頭。 我不知道提升。

使用#pragma包裝標頭的原因還不夠,在實例化模板或擴展宏(或者甚至可能使用內聯)時會生成一些警告。

檢查文件所包含的所有內容。可能是其中一個可能會將警告重置為默認狀態。 我已經看到了VC ++附帶的MFC或ATL標題 - 一些警告被禁用,然后使用“默認”調用說明符而不是使用推/彈對重新啟用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM