尝试使用%zu转换说明符以十进制形式输出指针的地址。运行正常,除了gcc警告'格式'%zu'期望类型'size_t',但参数4的类型为'long int *'。使用的gcc选项显示在问题中。 gcc仍然在没有设置任何选项的情况下发出警告(除了-std = c99)。然而,clang并没有发出任何相同选项的警告。这是在OS X 10.7上。只是好奇为什么clang没有发出任何警告? gcc比clang“更好”进行调试/编译吗?
答案 0 :(得分:2)
这似乎是特定于clang中的z
大小修饰符;你做会收到%lu
,%u
,%hu
等警告(即使没有任何选项)
一般来说,根据我的经验,clang比GCC有更多有用的警告信息。这是该体验的一个例外。我会提交一个错误。
答案 1 :(得分:0)
你需要进行演员表,但要注意,如果你的代码在size_t与指针大小不同的机器上运行,那么它就会做错了。可能还不错......
printf ("%zu\n", (size_t)my_ptr);