如何得到XCode 6、LLVM编译器检查c函数参数
How to get XCode 6, LLVM compiler to check c function arguments
有谁知道如何让 Xcode6 中的 Apple LLVM 编译器在函数参数与原型不匹配时发出警告?使用默认设置,以下不会生成警告:
void test(int *x)
{
printf("%d",*x);
}
void caller()
{
int x = 5;
test(x);
}
我在设置中尝试了 "require function prototypes",但是当函数没有与声明不同的原型时,这只是抱怨。无论我是否有单独的原型,都会出现上述问题。它似乎也不关心参数的数量是否与声明或原型匹配。另外,我尝试了 -Wstrict-prototypes 但没有效果。这几乎像是一个错误。
更新:我刚刚在另一个 Mac 上用另一个 Xcode 项目尝试了这个,我收到了预期的警告。因此,其他系统上出现了问题。我会把它归咎于项目,但我在 2 个不相关的项目中看到了相同的行为。这两个项目都是几年前创建的,并且已经通过 Xcode 的各种迭代自动升级,但对于有效的项目来说确实如此。有问题的系统是运行Yosemite,没有问题的是运行小牛。相同 Xcode 6.1.1。有问题的系统现在不在身边,否则我会比较 2 个全新的相同项目的行为。
好吧,这只是配置错误的项目。 "suspicious implicit conversions" 设置为 No,这具有设置 Wno-int-conversion 的效果,它允许 int <-> 指针转换而不发出警告。我以为我看到了一些其他行为,表明它根本没有检查 declaration/prototype,所以我正在寻找与此相关的设置。查看编译器命令行指出了问题。
有谁知道如何让 Xcode6 中的 Apple LLVM 编译器在函数参数与原型不匹配时发出警告?使用默认设置,以下不会生成警告:
void test(int *x)
{
printf("%d",*x);
}
void caller()
{
int x = 5;
test(x);
}
我在设置中尝试了 "require function prototypes",但是当函数没有与声明不同的原型时,这只是抱怨。无论我是否有单独的原型,都会出现上述问题。它似乎也不关心参数的数量是否与声明或原型匹配。另外,我尝试了 -Wstrict-prototypes 但没有效果。这几乎像是一个错误。
更新:我刚刚在另一个 Mac 上用另一个 Xcode 项目尝试了这个,我收到了预期的警告。因此,其他系统上出现了问题。我会把它归咎于项目,但我在 2 个不相关的项目中看到了相同的行为。这两个项目都是几年前创建的,并且已经通过 Xcode 的各种迭代自动升级,但对于有效的项目来说确实如此。有问题的系统是运行Yosemite,没有问题的是运行小牛。相同 Xcode 6.1.1。有问题的系统现在不在身边,否则我会比较 2 个全新的相同项目的行为。
好吧,这只是配置错误的项目。 "suspicious implicit conversions" 设置为 No,这具有设置 Wno-int-conversion 的效果,它允许 int <-> 指针转换而不发出警告。我以为我看到了一些其他行为,表明它根本没有检查 declaration/prototype,所以我正在寻找与此相关的设置。查看编译器命令行指出了问题。