【问题标题】:How can I disable -Wcompare-distinct-pointer-types warning in clang?如何在 clang 中禁用 -Wcompare-distinct-pointer-types 警告?
【发布时间】:2016-01-10 16:26:34
【问题描述】:

我遇到编译器错误,

不同指针类型的比较('OrgApacheXpathObjectsXObject *' 和'OrgApacheXpathObjectsXNumber *') [-Werror,-Wcompare-distinct-pointer-types]

尝试使用 -Wno-incompatible-pointer-types 禁用它,但没有帮助。 (-Wno-compare-distinct-pointer-types 甚至不是一个有效的参数。)

在 GCC 上,显然无法禁用此警告,只是希望 Clang 能更好一些?

我无法控制源代码。

【问题讨论】:

    标签: objective-c compiler-errors clang llvm xcode7


    【解决方案1】:
    #pragma clang diagnostic push
    #pragma clang diagnostic ignored "-Wincompatible-pointer-types"
    ...
    your code
    ...
    #pragma clang diagnostic pop
    

    【讨论】:

    • 抱歉,这对我不起作用 --- 当我重新编译时,警告仍然出现。我与 [NSNull null] 竞争 NSString*val = [myDictionary objectForKey:@"myKey"] - 并且警告“不同指针类型的比较('NSString *' 和 'NSNull * _Nonnull')”即使在这个编译指示范围内仍然存在
    【解决方案2】:

    -Wno-compare-distinct-pointer-types 确实有效。问题是,如果您在该行的其他地方有任何无效的编译器标志,那么整行都会是错误的,而不仅仅是一个错误的标志。

    【讨论】:

    • 另外值得注意的是选项的顺序很重要。例如“-Wno-covered-switch-default -Wcovered-switch-default”不会禁用警告,但“-Wcovered-switch-default -Wno-covered-switch-default”会。
    猜你喜欢
    • 2022-12-15
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    相关资源
    最近更新 更多