【问题标题】:How to get XCode 6, LLVM compiler to check c function arguments如何让 XCode 6、LLVM 编译器检查 c 函数参数
【发布时间】:2015-01-12 04:53:58
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • -Wint-conversion ?
  • -Wall 默认启用-Wconversion

标签: c xcode


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-09-29
    • 2020-10-10
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2011-09-03
    相关资源
    最近更新 更多