clang中的assign-enum警告是什么?

时间:2013-08-28 09:03:52

标签: objective-c clang afnetworking

我正在进行AFNetworking实施,我发现了这个

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wassign-enum"
[request setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:0 error:&error]];
#pragma clang diagnostic pop

AFHTTPClient:489-492

assign-enum警告显然已被关闭,但我不知道这是什么意思。

在这种情况下clang会发出什么警告?

2 个答案:

答案 0 :(得分:8)

在没有clang pragma的情况下发出的警告是:

  

整数常量不在枚举类型的范围内   ' NSJSONWritingOptions' (又名' enum NSJSONWritingOptions')

查看NSJSONWritingOptions的声明,我们发现0没有定义的值:

enum {     NSJSONWritingPrettyPrinted = (1UL << 0) }; typedef NSUInteger NSJSONWritingOptions;

文档确实建议传递0,但没有像NSJSONWritingNoOption = 0那样定义的选项,因此我们将一个常量(0)分配给一个枚举类型,该类型没有将0定义为可能的值。

答案 1 :(得分:0)

如果删除构建它的pragma,您将看到警告。 除此之外,你需要检查铿锵手册。