c - 如何让 XCode 6、LLVM 编译器检查 c 函数参数

标签 c xcode

有谁知道如何让 Xcode 6 中的 Apple LLVM 编译器在函数参数与原型(prototype)不匹配时发出警告?使用默认设置,以下不会生成警告:

void test(int *x)
{
    printf("%d",*x);
}

void caller()
{
    int x = 5;
    test(x);
}

我在设置中尝试了“需要函数原型(prototype)”,但是当函数没有与声明不同的原型(prototype)时,这只是提示。无论我是否有单独的原型(prototype),都会出现上述问题。它似乎也不关心参数的数量是否与声明或原型(prototype)匹配。另外,我尝试了 -Wstrict-prototypes 但没有效果。这几乎像是一个错误。

更新:我刚刚在另一台 Mac 上使用不同的 Xcode 项目尝试了此操作,我收到了预期的警告。因此,其他系统上出现了问题。我会把它归咎于项目,但我在 2 个不相关的项目中看到了相同的行为。这两个项目都是几年前创建的,并且已经通过 Xcode 的各种迭代自动升级,但对于有效的项目来说确实如此。有问题的系统正在运行 Yosemite,而没有问题的系统正在运行 Mavericks。相同的 Xcode 6.1.1。有问题的系统现在不在身边,否则我会比较 2 个全新的相同项目的行为。

最佳答案

好吧,这只是配置错误的项目。 “可疑的隐式转换”设置为否,这具有设置 Wno-int-conversion 的效果,它允许 int <-> 指针转换而不发出警告。我以为我看到了一些其他行为,表明它根本没有检查声明/原型(prototype),所以我正在寻找与此相关的设置。查看编译器命令行指出了问题。

关于c - 如何让 XCode 6、LLVM 编译器检查 c 函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27895502/

相关文章:

c - Scanf 程序访问被拒绝

ios - 为什么我的应用程序由于NSPathStore2发行过多而崩溃?

ios - 访问笔记应用程序数据

ios - Xcode 4.5 中的当前位置错误

objective-c - 什么是 kCFErrorDomainCFNetwork?

c - 了解 Aleph One 的第一个缓冲区溢出漏洞

c++ -/usr/bin/C++ 无法使用共享库编译为 gcc

c - 递归 FloodFill 算法的段错误

c - IRremote.h "no such file or directory"

ios - 为什么我无法在 xcode 中选择 segue 类型?