gcc -W -Wall -O -pedantic -std = c99 vs clang具有相同的选项

时间:2011-12-01 14:28:32

标签: c gcc osx-lion clang

尝试使用%zu转换说明符以十进制形式输出指针的地址。运行正常,除了gcc警告'格式'%zu'期望类型'size_t',但参数4的类型为'long int *'。使用的gcc选项显示在问题中。 gcc仍然在没有设置任何选项的情况下发出警告(除了-std = c99)。然而,clang并没有发出任何相同选项的警告。这是在OS X 10.7上。只是好奇为什么clang没有发出任何警告? gcc比clang“更好”进行调试/编译吗?

2 个答案:

答案 0 :(得分:2)

这似乎是特定于clang中的z大小修饰符;你会收到%lu%u%hu等警告(即使没有任何选项)

一般来说,根据我的经验,clang比GCC有更多有用的警告信息。这是该体验的一个例外。我会提交一个错误。

答案 1 :(得分:0)

你需要进行演员表,但要注意,如果你的代码在size_t与指针大小不同的机器上运行,那么它就会做错了。可能还不错......

printf ("%zu\n", (size_t)my_ptr);