2011-09-05 133 views
1

我正在爲我的應用程序使用Boost(1.47.0自編譯)和MinGW 4.6(用於C++ 0x功能),但我在Boost的JSON解析代碼中得到了一些警告(我使用-Werror)。MinGW和Boost警告錯誤?

我不會在Linux或MSVC中得到這些錯誤(MSVC Boost是從完全相同的源代碼樹自編譯的)。以下是他們指出的錯誤和線條。

boost\property_tree\detail\json_parser_write.hpp|35|error: comparison is always true due to limited range of data type [-Werror=type-limits]

 if (*b == 0x20 || *b == 0x21 || (*b >= 0x23 && *b <= 0x2E) || 
      (*b >= 0x30 && *b <= 0x5B) || (*b >= 0x5D && *b <= 0xFF)) 
      result += *b; 

boost\property_tree\detail\json_parser_read.hpp|115|error: unused parameter 'e' [-Werror=unused-parameter]

 void operator()(It b, It e) const 
     { 
      c.string += *b; 
     } 

的錯誤似乎聲音,但沒有辦法,我就是缺少一個解決方法嗎?

回答

1

關於第一個,我猜'b'被定義爲'char *'?字符默認爲unsigned或signed是依賴於編譯器的AFAIK。有可能mingw是默認簽名的字符,與可能範圍外的0x0FF進行比較。

第二個是不言自明的,警告正在做它應該做的事情,你應該只是禁用該警告。

+0

我猜Boost軟件包每個平臺都不一樣? – Jookia

+0

不,在這種情況下,它是編譯器(以及它默認的'char'),這是不同的,而不是包本身。 – fileoffset

+0

我還沒有得到Linux上未使用的參數'e'問題,並且沒有找到一種方法來更改在MinGW上簽名的默認字符。 – Jookia