2017-07-16 89 views
1

我想編譯一個簡單的code gcc和clang。 gcc會爲無法比較的投射產生警告(太棒了!)。然而,鐺沒有產生任何警告!我已通過兩個相同的論點:爲什麼Clang不會爲不兼容的演員生成任何警告?

cc -Wall -Wextra tmp3.c 
gcc -Wall -Wextra tmp3.c 

我是否通過所有必要的選項來叮噹編譯器或缺少的東西?叮噹documentation不是一個很好的幫助!

代碼:

int main(void) 
{ 
    void *b = (void *)0x12345678; 
    int a = (int)(unsigned long)b; 
    int c = (int)b; 
    return a + c; 
} 

鏘版本3.8

+0

爲什麼_expect_ clang發出警告? – Siguza

+0

找到你可能不知道的警告的最好方法是'-Weverything'。這個選項(不幸的是,只能在Clang上使用)會逐字打開每一個警告。你說得對,文檔不是非常有幫助。 –

+0

@Siguza:爲什麼不呢?對於任何編程語言,這是任何編譯器中最基本的東西 - 警告不兼容的轉換! – DJJ

回答

1

我已經達到了對鐺開發商(郵件列表)。我得到了這樣的迴應:

在C++模式下,Clang錯誤就行了,和其他人一樣。然而,在C 模式下,轉換通常更寬鬆。在這個 的情況下,我懷疑Clang也應該產生這個警告。但是, 可能需要補丁。

相關問題