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

问题描述 投票:0回答:2

尝试使用%zu转换说明符以十进制形式输出指针的地址。可以正常运行,除了GCC警告

format ‘%zu’ expects type ‘size_t’, but argument 4 has type ‘long int *’

使用的GCC选项显示在问题中。 GCC仍警告未设置任何选项(-std=c99除外)。但是,使用相同的选项,clang根本不会发出任何警告。这是在OS X 10.7上。只是好奇为什么clang不发出任何警告? GCC在调试/编译方面比clang更好吗?

c gcc osx-lion clang
2个回答
2
投票

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

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


0
投票

[您需要进行强制转换,但是请注意,如果您的代码曾经在size_t与指针大小不同的计算机上运行,​​那么它将做错事情。也许还可以...

printf ("%zu\n", (size_t)my_ptr);
© www.soinside.com 2019 - 2024. All rights reserved.