clang中的赋值枚举警告是什么



我正在进行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 pragmas的情况下发出的警告是:

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

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

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

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

如果删除编译中的杂注,您将看到警告。除此之外,你还需要查看叮当声手册。

最新更新