2017-07-16 111 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也应该产生这个警告。但是, 可能需要补丁。