去除警告的方法:
#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wunused-function"
local void free_linkedlist(ll)
linkedlist_data* ll;
{
free_datablock(ll->first_block);
ll->first_block = ll->last_block = NULL;
}
#pragma clang diagnostic pop
上述的代码块中,正常的代码是没有下方这些代码的。但是呢,这个方法我是已经写了,但是在项目中没有运用到,所以会报出这样的错误,如图错误信息图所示:
代码块:
#pragma clang diagnostic push
#pragma clang diagnostic ignored"-Wunused-function"
// edit code
#pragma clang diagnostic pop
错误信息图:
在Xcode中选中警告的消息,右击选择Reveal in Log,然后右边会有报告的消息
-Wunused-function
所以上面去除警告是使用
-Wunused-function
这个来写的。其他的警告同理做法就能去除。
示例:
我们知道,UIAlertView虽然简单易用,但是呢Apple在iOS 9.0的时候丢弃这个类了,我们在其头文件中可以看到
NS_CLASS_DEPRECATED_IOS(2_0, 9_0, "UIAlertView is deprecated. Use UIAlertController with a preferredStyle of UIAlertControllerStyleAlert instead") __TVOS_PROHIBITED
所以平时用到这个方法的时候,项目中Xcode就会给这个地方给出警告。但是也有办法处理这样的警告,如下图所示:
下方罗列出来是一些iOS中常见的一些警告消息,在使用第三方库或者Apple官方过时的方法的时候,都会报警告。
Warning | Message |
---|---|
-WCFString-literal | input conversion stopped due to an input byte that does not belong to the input codeset UTF-8 |
-WNSObject-attribute | __attribute ((NSObject)) may be put on a typedef only, attribute is ignored |
-Wabstract-vbase-init | initializer for virtual base class %0 of abstract class %1 will never be used |
-Waddress-of-array-temporary | pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression |
-Warc-maybe-repeated-use-of-weak | "weak %select{variable property implicit property instance variable}0 %1 may be accessed multiple times in this %select{function method block lambda}2 and may be unpredictably set to nil assign to a strong variable to keep the object alive |
-Warc-non-pod-memaccess | %select{destination for source of}0 this %1 call is a pointer to ownership-qualified type %2 |
-Warc-performSelector-leaks | performSelector may cause a leak because its selector is unknown |
-Warc-repeated-use-of-weak | "weak %select{variable property implicit property instance variable}0 %1 is accessed multiple times in this %select{function method block lambda}2 but may be unpredictably set to nil assign to a strong variable to keep the object alive |
-Warc-retain-cycles | capturing %0 strongly in this block is likely to lead to a retain cycle |
-Warc-unsafe-retained-assign | assigning retained object to unsafe property object will be released after assignment |
-Warc-unsafe-retained-assign | assigning %select{array literal dictionary literal numeric literal boxed expression should not happen block literal}0 to a weak %select{property variable}1 object will be released after assignment |
-Warc-unsafe-retained-assign | assigning retained object to %select{weak unsafe_unretained}0 %select{property variable}1 object will be released after assignment |
-Warray-bounds | array index %0 is past the end of the array (which contains %1 element%s2) |
-Warray-bounds | array index %0 is before the beginning of the array |
-Warray-bounds | 'static' has no effect on zero-length arrays |
-Warray-bounds | array argument is too small contains %0 elements, callee requires at least %1 |
-Warray-bounds-pointer-arithmetic | the pointer incremented by %0 refers past the end of the array (that contains %1 element%s2) |
-Warray-bounds-pointer-arithmetic | the pointer decremented by %0 refers before the beginning of the array |
-Wassign-enum | integer constant not in range of enumerated type %0 |
-Watomic-property-with-user-defined-accessor | writable atomic property %0 cannot pair a synthesized %select{getter setter}1 with a user defined %select{getter setter}2 |
-Wattributes | unknown attribute %0 ignored |
-Wauto-var-id | 'auto' deduced as 'id' in declaration of %0 |
-Wavailability | unknown platform %0 in availability macro |
-Wavailability | overriding method %select{introduced after deprecated before obsoleted before}0 overridden method on %1 (%2 vs. %3) |
-Wavailability | availability does not match previous declaration |
-Wavailability | overriding method cannot be unavailable on %0 when its overridden method is available |
-Wavailability | feature cannot be %select{introduced deprecated obsoleted}0 in %1 version %2 before it was %select{introduced deprecated obsoleted}3 in version %4 attribute ignored |
-Wbad-function-cast | cast from function call of type %0 to non-matching type %1 |
-Wbitfield-constant-conversion | implicit truncation from %2 to bitfield changes value from %0 to %1 |
-Wbitwise-op-parentheses | '&' within '\' |
-Wbool-conversion | "initialization of pointer of type %0 to null from a constant boolean " "expression |
-Wbridge-cast | %0 cannot bridge to %1 |
-Wbridge-cast | %0 bridges to %1, not %2 |
-Wbuiltin-requires-header | declaration of built-in function '%0' requires inclusion of the header stdio.h |
-Wbuiltin-requires-header | declaration of built-in function '%0' requires inclusion of the header setjmp.h |
-Wbuiltin-requires-header | declaration of built-in function '%0' requires inclusion of the header ucontext.h |
-Wc++-compat | %select{ empty }0%select{struct union}1 has size 0 in C, %select{size 1 non-zero size}2 in C++ |
-Wc++11-compat | explicit instantiation cannot be 'inline' |
-Wc++11-compat | explicit instantiation of %0 must occur at global scope |
-Wc++11-compat | explicit instantiation of %0 not in a namespace enclosing %1 |
-Wc++11-compat | explicit instantiation of %q0 must occur in namespace %1 |
-Wc++11-narrowing | constant expression evaluates to %0 which cannot be narrowed to type %1 in C++11 |
-Wc++11-narrowing | type %0 cannot be narrowed to %1 in initializer list in C++11 |
-Wc++11-narrowing | non-constant-expression cannot be narrowed from type %0 to %1 in initializer list in C++11 |
-Wc++98-c++11-compat | type definition in a constexpr %select{function constructor}0 is incompatible with C++ standards before C++1y |
-Wc++98-c++11-compat | use of this statement in a constexpr %select{function constructor}0 is incompatible with C++ standards before C++1y |
-Wc++98-c++11-compat | init-captures.def warn_cxx11_compat_init_capture : Warning "initialized lambda captures are incompatible with C++ standards " "before C++1y |
-Wc++98-c++11-compat | variable declaration in a constexpr %select{function constructor}0 is incompatible with C++ standards before C++1y |
-Wc++98-c++11-compat | constexpr function with no return statements is incompatible with C++ standards before C++1y |
-Wc++98-c++11-compat | multiple return statements in constexpr function is incompatible with C++ standards before C++1y |
-Wc++98-c++11-compat | variable templates are incompatible with C++ standards before C++1y |
-Wc++98-compat | substitution failure due to access control is incompatible with C++98 |
-Wc++98-compat | %select{anonymous struct union}0 member %1 with a non-trivial %select{constructor copy constructor move constructor copy assignment operator move assignment operator destructor}2 is incompatible with C++98 |
-Wc++98-compat | enumeration type in nested name specifier is incompatible with C++98 |
-Wc++98-compat | static data member %0 in union is incompatible with C++98 |
-Wc++98-compat | default template arguments for a function template are incompatible with C++98 |
-Wc++98-compat | scalar initialized from empty initializer list is incompatible with C++98 |
-Wc++98-compat | befriending %1 without '%select{struct interface union class enum}0' keyword is incompatible with C++98 |
-Wc++98-compat | use of null pointer as non-type template argument is incompatible with C++98 |
-Wc++98-compat | friend declaration naming a member of the declaring class is incompatible with C++98 |
-Wc++98-compat | non-class friend type %0 is incompatible with C++98 |
-Wc++98-compat | befriending enumeration type %0 is incompatible with C++98 |
-Wc++98-compat | use of non-static data member %0 in an unevaluated context is incompatible with C++98 |
-Wc++98-compat | friend function %0 would be implicitly redefined in C++98 |
-Wc++98-compat | %select{class template class template partial variable template variable template partial function template member function static data member member class member enumeration}0 specialization of %1 outside namespace %2 is incompatible with C++98÷ |
-Wc++98-compat | reference initialized from initializer list is incompatible with C++98 |
-Wc++98-compat | redundant parentheses surrounding address non-type template argument are incompatible with C++98 |
-Wc++98-compat | initialization of initializer_list object is incompatible with C++98 |
-Wc++98-compat | use of 'template' keyword outside of a template is incompatible with C++98 |
-Wc++98-compat | non-type template argument referring to %select{function object}0 %1 with internal linkage is incompatible with C++98 |
-Wc++98-compat | use of 'typename' outside of a template is incompatible with C++98 |
-Wc++98-compat | passing object of trivial but non-POD type %0 through variadic %select{function block method constructor}1 is incompatible with C++98 |
-Wc++98-compat | goto would jump into protected scope in C++98 |
-Wc++98-compat | constructor call from initializer list is incompatible with C++98 |
-Wc++98-compat | 'auto' type specifier is incompatible with C++98 |
-Wc++98-compat | delegating constructors are incompatible with C++98 |
-Wc++98-compat | 'constexpr' specifier is incompatible with C++98 |
-Wc++98-compat | inheriting constructors are incompatible with C++98 |
-Wc++98-compat | explicit conversion functions are incompatible with C++98 |
-Wc++98-compat | switch case would be in a protected scope in C++98 |
-Wc++98-compat | '%0' type specifier is incompatible with C++98 |
-Wc++98-compat | indirect goto might cross protected scopes in C++98 |
-Wc++98-compat-pedantic | cast between pointer-to-function and pointer-to-object is incompatible with C++98 |
-Wc++98-compat-pedantic | implicit conversion from array size expression of type %0 to %select{integral enumeration}1 type %2 is incompatible with C++98 |
-Wcast-align | cast from %0 to %1 increases required alignment from %2 to %3 |
-Wcast-of-sel-type | cast of type %0 to %1 is deprecated use sel_getName instead |
-Wchar-subscripts | array subscript is of type 'char' |
-Wconditional-uninitialized | variable %0 may be uninitialized when %select{used here captured by block}1 |
-Wconstant-logical-operand | use of logical '%0' with constant operand |
-Wconstexpr-not-const | 'constexpr' non-static member function will not be implicitly 'const' in C++1y add 'const' to avoid a change in behavior |
-Wconsumed | state of variable '%0' must match at the entry and exit of loop |
-Wconsumed | parameter '%0' not in expected state when the function returns: expected '%1', observed '%2' |
-Wconsumed | argument not in expected state expected '%0', observed '%1' |
-Wconsumed | invalid invocation of method '%0' on a temporary object while it is in the '%1' state |
-Wconsumed | return state set for an unconsumable type '%0' |
-Wconsumed | consumed analysis attribute is attached to member of class '%0' which isn't marked as consumable |
-Wconsumed | invalid invocation of method '%0' on object '%1' while it is in the '%2' state |
-Wconsumed | return value not in expected state expected '%0', observed '%1' |
-Wconversion | implicit conversion discards imaginary component: %0 to %1 |
-Wconversion | non-type template argument with value '%0' converted to '%1' for unsigned template parameter of type %2 |
-Wconversion | implicit conversion loses floating-point precision: %0 to %1 |
-Wconversion | implicit conversion loses integer precision: %0 to %1 |
-Wconversion | non-type template argument value '%0' truncated to '%1' for template parameter of type %2 |
-Wconversion | implicit conversion turns vector to scalar: %0 to %1 |
-Wconversion | implicit conversion turns floating-point number into integer: %0 to %1 |
-Wcovered-switch-default | default label in switch which covers all enumeration values |
-Wcustom-atomic-properties | atomic by default property %0 has a user defined %select{getter setter}1 (property should be marked 'atomic' if this is intended) |
-Wdangling-field | initializing pointer member %0 with the stack address of parameter %1 |
-Wdangling-field | binding reference %select{ subobject of }1member %0 to a temporary value |
-Wdangling-field | binding reference member %0 to stack allocated parameter %1 |
-Wdangling-initializer-list | array backing the initializer list will be destroyed at the end of %select{the full-expression the constructor}0 |
-Wdelete-incomplete | deleting pointer to incomplete type %0 may cause undefined behavior |
-Wdelete-non-virtual-dtor | delete called on %0 that is abstract but has non-virtual destructor |
-Wdelete-non-virtual-dtor | delete called on %0 that has virtual functions but non-virtual destructor |
-Wdeprecated | access declarations are deprecated use using declarations instead |
-Wdeprecated | definition of implicit copy %select{constructor assignment operator}1 for %0 is deprecated because it has a user-declared %select{copy %select{assignment operator constructor}1 destructor}2 |
-Wdeprecated | dynamic exception specifications are deprecated |
-Wdeprecated-increment-bool | incrementing expression of type bool is deprecated |
-Wdeprecated-objc-isa-usage | assignment to Objective-C's isa is deprecated in favor of object_setClass() |
-Wdeprecated-objc-isa-usage | direct access to Objective-C's isa is deprecated in favor of object_getClass() |
-Wdeprecated-objc-pointer-introspection | bitmasking for introspection of Objective-C object pointers is strongly discouraged |
-Wdeprecated-objc-pointer-introspection-performSelector | warn_objc_pointer_masking.Text |
-Wdeprecated-writable-strings | dummy warning to enable -fconst-strings |
-Wdirect-ivar-access | instance variable %0 is being directly accessed |
-Wdistributed-object-modifiers | conflicting distributed object modifiers on return type in implementation of %0 |
-Wdistributed-object-modifiers | conflicting distributed object modifiers on parameter type in implementation of %0 |
-Wdivision-by-zero | division by zero is undefined |
-Wdivision-by-zero | remainder by zero is undefined |
-Wdocumentation | parameter '%0' not found in the function declaration |
-Wdocumentation | not a Doxygen trailing comment |
-Wduplicate-enum | element %0 has been implicitly assigned %1 which another element has been assigned |
-Wduplicate-method-match | multiple declarations of method %0 found and ignored |
-Wdynamic-class-memaccess | %select{destination for source of first operand of second operand of}0 this %1 call is a pointer to dynamic class %2 vtable pointer will be %select{overwritten copied moved compared}3 |
-Wempty-body | switch statement has empty body |
-Wempty-body | for loop has empty body |
-Wempty-body | if statement has empty body |
-Wempty-body | range-based for loop has empty body |
-Wempty-body | while loop has empty body |
-Wenum-compare | comparison of two values with different enumeration types%diff{ ($ and $) }0,1 |
-Wenum-conversion | implicit conversion from enumeration type %0 to different enumeration type %1 |
-Wexit-time-destructors | declaration requires an exit-time destructor |
-Wexplicit-ownership-type | method parameter of type %0 with no explicit ownership |
-Wextern-c-compat | %select{ empty }0%select{struct union}1 has size 0 in C, %select{size 1 non-zero size}2 in C++ |
-Wextern-initializer | 'extern' variable has an initializer |
-Wfloat-equal | comparing floating point with == or != is unsafe |
-Wformat | "data argument position '%0' exceeds the number of data arguments (%1) |
-Wformat | position arguments in format strings start counting at 1 (not 0) |
-Wformat | invalid position specified for %select{field width field precision}0 |
-Wformat | cannot mix positional and non-positional arguments in format string |
-Wformat | values of type '%0' should not be used as format arguments add an explicit cast to %1 instead |
-Wformat | format specifies type %0 but the argument has type %1 |
-Wformat | zero field width in scanf format string is unused |
-Wformat | no closing ']' for '%%[' in scanf format string |
-Wformat | format string should not be a wide string |
-Wformat | format string contains '\0' within the string body |
-Wformat | '%select{ '\'.}0' specified field %select{width precision}0 is missing a matching 'int' argument |
-Wformat | field %select{width precision}0 should have type %1, but argument has type %2 |
-Wformat | %select{field width precision}0 used with '%1' conversion specifier, resulting in undefined behavior |
-Wformat | format string missing |
-Wformat | incomplete format specifier |
-Wformat | flag '%0' results in undefined behavior with '%1' conversion specifier |
-Wformat | flag '%0' is ignored when flag '%1' is present |
-Wformat | more '%%' conversions than data arguments |
-Wformat | length modifier '%0' results in undefined behavior or no effect with '%1' conversion specifier |
-Wformat-extra-args | data argument not used by format string |
-Wformat-invalid-specifier | invalid conversion specifier '%0' |
-Wformat-nonliteral | format string is not a string literal |
-Wformat-security | format string is not a string literal (potentially insecure) |
-Wformat-zero-length | format string is empty |
-Wgcc-compat | GCC does not allow the 'cleanup' attribute argument to be anything other than a simple identifier |
-Wglobal-constructors | declaration requires a global constructor |
-Wglobal-constructors | declaration requires a global destructor |
-Wgnu-conditional-omitted-operand | use of GNU ?: conditional expression extension, omitting middle operand |
-Wheader-hygiene | using namespace directive in global context in header |
-Widiomatic-parentheses | using the result of an assignment as a condition without parentheses |
-Wignored-attributes | 'malloc' attribute only applies to functions returning a pointer type |
-Wignored-attributes | %0 attribute only applies to %select{functions unions variables and functions functions and methods parameters functions, methods and blocks functions, methods, and classes functions, methods, and parameters classes variables methods variables, functions and labels fields and global variables structs variables, functions and tag types thread-local variables variables and fields variables, data members and tag types types and namespaces Objective-C interfaces}1 |
-Wignored-attributes | '%0' attribute cannot be specified on a definition |
-Wignored-attributes | __weak attribute cannot be specified on an automatic variable when ARC is not enabled |
-Wignored-attributes | Objective-C GC does not allow weak variables on the stack |
-Wignored-attributes | __weak attribute cannot be specified on a field declaration |
-Wignored-attributes | attribute %0 cannot be applied to %select{functions Objective-C method}1 without return value |
-Wignored-attributes | attribute declaration must precede definition |
-Wignored-attributes | attribute %0 is ignored, place it after \"%select{class struct union interface enum}1\" to apply attribute to type declaration |
-Wignored-attributes | __declspec attribute %0 is not supported |
-Wignored-attributes | attribute %0 ignored, because it cannot be applied to a type |
-Wignored-attributes | attribute %0 after definition is ignored |
-Wignored-attributes | %0 attribute ignored |
-Wignored-attributes | 'sentinel' attribute only supported for variadic %select{functions blocks}0 |
-Wignored-attributes | 'sentinel' attribute requires named arguments |
-Wignored-attributes | '%0' only applies to %select{function pointer Objective-C object or block pointer}1 types type here is %2 |
-Wignored-attributes | 'nonnull' attribute applied to function with no pointer arguments |
-Wignored-attributes | %0 attribute can only be applied to instance variables or properties |
-Wignored-attributes | unknown visibility %0 |
-Wignored-attributes | %0 calling convention ignored on variadic function |
-Wignored-attributes | %0 only applies to variables with static storage duration and functions |
-Wignored-attributes | ibaction attribute can only be applied to Objective-C instance methods |
-Wignored-attributes | #pramga ms_struct can not be used with dynamic classes or structures |
-Wignored-attributes | transparent union definition must contain at least one field transparent_union attribute ignored |
-Wignored-attributes | first field of a transparent union cannot have %select{floating point vector}0 type %1 transparent_union attribute ignored |
-Wignored-attributes | 'gnu_inline' attribute requires function to be marked 'inline', attribute ignored |
-Wignored-attributes | calling convention %0 ignored for this target |
-Wignored-attributes | transparent_union attribute can only be applied to a union definition attribute ignored |
-Wignored-attributes | %select{alignment size}0 of field %1 (%2 bits) does not match the %select{alignment size}0 of the first field in transparent union transparent_union attribute ignored |
-Wignored-attributes | attribute %0 is already applied |
-Wignored-attributes | %0 attribute ignored for field of type %1 |
-Wignored-attributes | %0 attribute ignored when parsing type |
-Wignored-attributes | %0 attribute only applies to %select{functions methods properties}1 that return %select{an Objective-C object a pointer a non-retainable pointer}2 |
-Wignored-attributes | %0 attribute only applies to %select{Objective-C object pointer}1 parameters |
-Wignored-attributes | attribute %0 is already applied with different parameters |
-Wignored-attributes | %0 attribute argument not supported: %1 |
-Wignored-qualifiers | "'%0' type qualifier%s1 on return type %plural{1:has :have}1 no effect |
-Wignored-qualifiers | ARC %select{unused unsafe_unretained strong weak autoreleasing}0 lifetime qualifier on return type is ignored |
-Wimplicit-atomic-properties | property is assumed atomic by default |
-Wimplicit-atomic-properties | property is assumed atomic when auto-synthesizing the property |
-Wimplicit-fallthrough | fallthrough annotation in unreachable code |
-Wimplicit-fallthrough | unannotated fall-through between switch labels |
-Wimplicit-fallthrough | fallthrough annotation does not directly precede switch label |
-Wimplicit-function-declaration | implicit declaration of function %0 |
-Wimplicit-function-declaration | use of unknown builtin %0 |
-Wimplicit-retain-self | "block implicitly retains 'self' explicitly mention 'self' to indicate this is intended behavior |
-Wincompatible-library-redeclaration | incompatible redeclaration of library function %0 |
-Wincomplete-implementation | method definition for %0 not found |
-Winherited-variadic-ctor | inheriting constructor does not inherit ellipsis |
-Winitializer-overrides | subobject initialization overrides initialization of other fields within its enclosing subobject |
-Winitializer-overrides | initializer overrides prior initialization of this subobject |
-Wint-to-pointer-cast | cast to %1 from smaller integer type %0 |
-Wint-to-void-pointer-cast | cast to %1 from smaller integer type %0 |
-Winvalid-iboutlet | IBOutletCollection properties should be copy/strong and not assign |
-Winvalid-iboutlet | %select{instance variable property}2 with %0 attribute must be an object type (invalid %1) |
-Winvalid-noreturn | function %0 declared 'noreturn' should not return |
-Winvalid-noreturn | function declared 'noreturn' should not return |
-Wlarge-by-value-copy | return value of %0 is a large (%1 bytes) pass-by-value object pass it by reference instead ? |
-Wlarge-by-value-copy | %0 is a large (%1 bytes) pass-by-value argument pass it by reference instead ? |
-Wliteral-conversion | implicit conversion from %0 to %1 changes value from %2 to %3 |
-Wliteral-range | magnitude of floating-point constant too large for type %0 maximum is %1 |
-Wliteral-range | magnitude of floating-point constant too small for type %0 minimum is %1 |
-Wlogical-not-parentheses | logical not is only applied to the left hand side of this comparison |
-Wlogical-op-parentheses | '&&' within '\' |
-Wloop-analysis | variable%select{s %1 s %1 and %2 s %1, %2, and %3 s %1, %2, %3, and %4}0 used in loop condition not modified in loop body |
-Wloop-analysis | variable %0 is %select{decremented incremented}1 both in the loop header and in the loop body |
-Wmethod-signatures | conflicting parameter types in implementation of %0: %1 vs %2 |
-Wmethod-signatures | conflicting return type in implementation of %0: %1 vs %2 |
-Wmicrosoft | extra qualification on member %0 |
-Wmismatched-method-attributes | attributes on method implementation and its declaration must match |
-Wmismatched-parameter-types | conflicting parameter types in implementation of %0%diff{: $ vs $ }1,2 |
-Wmismatched-return-types | conflicting return type in implementation of %0%diff{: $ vs $ }1,2 |
-Wmissing-braces | suggest braces around initialization of subobject |
-Wmissing-declarations | '%0' ignored on this declaration |
-Wmissing-field-initializers | missing field '%0' initializer |
-Wmissing-method-return-type | method has no return type specified defaults to 'id' |
-Wmissing-noreturn | block could be declared with attribute 'noreturn' |
-Wmissing-noreturn | %select{function method}0 %1 could be declared with attribute 'noreturn' |
-Wmissing-prototypes | no previous prototype for function %0 |
-Wmissing-variable-declarations | no previous extern declaration for non-static variable %0 |
-Wmultiple-move-vbase | defaulted move assignment operator of %0 will move assign virtual base class %1 multiple times |
-Wnested-anon-types | anonymous types declared in an anonymous union/struct are an extension |
-Wnon-literal-null-conversion | "expression which evaluates to zero treated as a null pointer constant of " "type %0 |
-Wnon-pod-varargs | cannot pass object of %select{non-POD non-trivial}0 type %1 through variadic %select{function block method constructor}2 call will abort at runtime |
-Wnon-pod-varargs | cannot pass %select{non-POD non-trivial}0 object of type %1 to variadic %select{function block method constructor}2 expected type from format string was %3 |
-Wnon-pod-varargs | second argument to 'va_arg' is of ARC ownership-qualified type %0 |
-Wnon-pod-varargs | second argument to 'va_arg' is of non-POD type %0 |
-Wnon-virtual-dtor | %0 has virtual functions but non-virtual destructor |
-Wnonnull | null passed to a callee which requires a non-null argument |
-Wnull-arithmetic | comparison between NULL and non-pointer %select{(%1 and NULL) (NULL and %1)}0 |
-Wnull-arithmetic | use of NULL in arithmetic operation |
-Wnull-dereference | indirection of non-volatile null pointer will be deleted, not trap |
-Wobjc-autosynthesis-property-ivar-name-match | autosynthesized property %0 will use %select{ synthesized}1 instance variable %2, not existing instance variable %3 |
-Wobjc-forward-class-redefinition | redefinition of forward class %0 of a typedef name of an object type is ignored |
-Wobjc-interface-ivars | declaration of instance variables in the interface is deprecated |
-Wobjc-literal-compare | direct comparison of %select{an array literal a dictionary literal a numeric literal a boxed expression }0 has undefined behavior |
-Wobjc-literal-missing-atsign | string literal must be prefixed by '@' |
-Wobjc-method-access | class method %objcclass0 not found (return type defaults to 'id') |
-Wobjc-method-access | instance method %objcinstance0 not found (return type defaults to 'id') |
-Wobjc-method-access | instance method %0 is being used on 'Class' which is not in the root class |
-Wobjc-method-access | instance method %0 found instead of class method %1 |
-Wobjc-method-access | class method %objcclass0 not found (return type defaults to 'id') did you mean %objcclass2? |
-Wobjc-method-access | instance method %objcinstance0 not found (return type defaults to 'id') did you mean %objcinstance2? |
-Wobjc-missing-property-synthesis | "auto property synthesis is synthesizing property not explicitly synthesized |
-Wobjc-missing-super-calls | method possibly missing a [super %0] call |
-Wobjc-noncopy-retain-block-property | "retain'ed block property does not copy the block " "- use copy attribute instead |
-Wobjc-nonunified-exceptions | can not catch an exception thrown with @throw in C++ in the non-unified exception model |
-Wobjc-property-implementation | property %0 requires method %1 to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation |
-Wobjc-property-implementation | property %0 requires method %1 to be defined - use @dynamic or provide a method implementation in this category |
-Wobjc-property-implicit-mismatch | "primary property declaration is implicitly strong while redeclaration in class extension is weak |
-Wobjc-property-matches-cocoa-ownership-rule | property's synthesized getter follows Cocoa naming convention for returning 'owned' objects |
-Wobjc-property-no-attribute | no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed |
-Wobjc-property-no-attribute | default property attribute 'assign' not appropriate for non-GC object |
-Wobjc-property-synthesis | "auto property synthesis will not synthesize property '%0' because it cannot share an ivar with another synthesized property |
-Wobjc-property-synthesis | auto property synthesis will not synthesize property '%0' because it is 'readwrite' but it will be synthesized 'readonly' via another property |
-Wobjc-protocol-method-implementation | category is implementing a method which will also be implemented by its primary class |
-Wobjc-protocol-property-synthesis | auto property synthesis will not synthesize property declared in a protocol |
-Wobjc-redundant-literal-use | using %0 with a literal is redundant |
-Wobjc-root-class | class %0 defined without specifying a base class |
-Wobjc-string-compare | direct comparison of a string literal has undefined behavior |
-Wobjc-string-concatenation | concatenated NSString literal for an NSArray expression - possibly missing a comma |
-Wover-aligned | type %0 requires %1 bytes of alignment and the default allocator only guarantees %2 bytes |
-Woverloaded-shift-op-parentheses | overloaded operator %select{'\'}0 has lower precedence than comparison operator |
-Woverloaded-virtual | %q0 hides overloaded virtual %select{function functions}1 |
-Woverriding-method-mismatch | conflicting distributed object modifiers on parameter type in declaration of %0 |
-Woverriding-method-mismatch | conflicting parameter types in declaration of %0: %1 vs %2 |
-Woverriding-method-mismatch | conflicting variadic declaration of method and its implementation |
-Woverriding-method-mismatch | conflicting return type in declaration of %0: %1 vs %2 |
-Woverriding-method-mismatch | conflicting distributed object modifiers on return type in declaration of %0 |
-Woverriding-method-mismatch | conflicting return type in declaration of %0%diff{: $ vs $}1,2 |
-Woverriding-method-mismatch | conflicting parameter types in declaration of %0%diff{: $ vs $}1,2 |
-Wpacked | packed attribute is unnecessary for %0 |
-Wpadded | padding size of %0 with %1 %select{bytebit}2%select{s}3 to alignment boundary |
-Wpadded | padding %select{struct interface class}0 %1 with %2 %select{byte bit}3%select{s}4 to align %5 |
-Wpadded | padding %select{struct interface class}0 %1 with %2 %select{byte bit}3%select{s}4 to align anonymous bit-field |
-Wparentheses | %0 has lower precedence than %1 %1 will be evaluated first |
-Wparentheses | using the result of an assignment as a condition without parentheses |
-Wparentheses | operator '?:' has lower precedence than '%0' '%0' will be evaluated first |
-Wparentheses-equality | equality comparison with extraneous parentheses |
-Wpointer-arith | subtraction of pointers to type %0 of zero size has undefined behavior |
-Wpredefined-identifier-outside-function | predefined identifier is only valid inside function |
-Wprivate-extern | use of private_extern on a declaration may not produce external symbol private to the linkage unit and is deprecated |
-Wprotocol | method %0 in protocol not implemented |
-Wprotocol-property-synthesis-ambiguity | property of type %0 was selected for synthesis |
-Wreadonly-iboutlet-property | readonly IBOutlet property '%0' when auto-synthesized may not work correctly with 'nib' loader |
-Wreadonly-setter-attrs | property attributes '%0' and '%1' are mutually exclusive |
-Wreceiver-expr | receiver type %0 is not 'id' or interface pointer, consider casting it to 'id' |
-Wreceiver-forward-class | receiver type %0 for instance message is a forward declaration |
-Wreceiver-is-weak | "weak %select{receiver property implicit property}0 may be unpredictably set to nil |
-Wreinterpret-base-class | 'reinterpret_cast' %select{from to}3 class %0 %select{to from}3 its %select{virtual base base at non-zero offset}2 %1 behaves differently from 'static_cast' |
-Wreorder | %select{field base class}0 %1 will be initialized after %select{field base}2 %3 |
-Wrequires-super-attribute | %0 attribute cannot be applied to %select{methods in protocols dealloc}1 |
-Wreturn-stack-address | returning address of label, which is local |
-Wreturn-stack-address | returning reference to local temporary object |
-Wreturn-stack-address | address of stack memory associated with local variable %0 returned |
-Wreturn-stack-address | returning address of local temporary object |
-Wreturn-stack-address | reference to stack memory associated with local variable %0 returned |
-Wreturn-type | non-void %select{function method}1 %0 should return a value, DefaultError |
-Wreturn-type | control may reach end of non-void function |
-Wreturn-type | control reaches end of non-void function |
-Wreturn-type-c-linkage | %0 has C-linkage specified, but returns user-defined type %1 which is incompatible with C |
-Wreturn-type-c-linkage | %0 has C-linkage specified, but returns incomplete type %1 which could be incompatible with C |
-Wsection | section does not match previous declaration |
-Wselector | creating selector for nonexistent method %0 |
-Wselector-type-mismatch | multiple selectors named %0 found |
-Wself-assign | explicitly assigning a variable of type %0 to itself |
-Wself-assign-field | assigning %select{field instance variable}0 to itself |
-Wsentinel | not enough variable arguments in %0 declaration to fit a sentinel |
-Wsentinel | "missing sentinel in %select{function call method dispatch block call}0 |
-Wshadow | declaration shadows a %select{" "local variable" "variable in %2" "static data member of %2 " "field of %2}1 |
-Wshadow-ivar | local declaration of %0 hides instance variable |
-Wshift-count-negative | shift count is negative |
-Wshift-count-overflow | shift count = width of type |
-Wshift-op-parentheses | operator '%0' has lower precedence than '%1' '%1' will be evaluated first |
-Wshift-overflow | signed shift result (%0) requires %1 bits to represent, but %2 only has %3 bits |
-Wshift-sign-overflow | signed shift result (%0) sets the sign bit of the shift expression's type (%1) and becomes negative |
-Wshorten-64-to-32 | implicit conversion loses integer precision: %0 to %1 |
-Wsign-compare | comparison of integers of different signs: %0 and %1 |
-Wsign-conversion | implicit conversion changes signedness: %0 to %1 |
-Wsign-conversion | operand of ? changes signedness: %0 to %1 |
-Wsizeof-array-argument | sizeof on array function parameter will return size of %0 instead of %1 |
-Wsizeof-array-decay | sizeof on pointer operation will return size of %0 instead of %1 |
-Wsizeof-pointer-memaccess | '%0' call operates on objects of type %1 while the size is based on a " "different type %2 |
-Wsizeof-pointer-memaccess | argument to 'sizeof' in %0 call is the same pointer type %1 as the %select{destination source}2 expected %3 or an explicit length |
-Wsometimes-uninitialized | variable %0 is %select{used captured}1 uninitialized whenever %select{'%3' condition is %select{true false}4 '%3' loop %select{is entered exits because its condition is false}4 '%3' loop %select{condition is true exits because its condition is false}4 switch %3 is taken its declaration is reached %3 is called}2 |
-Wstatic-local-in-inline | non-constant static local variable in inline function may be different in different files |
-Wstatic-self-init | static variable %0 is suspiciously used within its own initialization |
-Wstrict-selector-match | multiple methods named %0 found |
-Wstring-compare | result of comparison against %select{a string literal@encode}0 is unspecified (use strncmp instead) |
-Wstring-conversion | implicit conversion turns string literal into bool: %0 to %1 |
-Wstring-plus-char | adding %0 to a string pointer does not append to the string |
-Wstring-plus-int | adding %0 to a string does not append to the string |
-Wstrlcpy-strlcat-size | size argument in %0 call appears to be size of the source expected the size of the destination |
-Wstrncat-size | the value of the size argument to 'strncat' is wrong |
-Wstrncat-size | the value of the size argument in 'strncat' is too large, might lead to a " "buffer overflow |
-Wstrncat-size | size argument in 'strncat' call appears " "to be size of the source |
-Wsuper-class-method-mismatch | method parameter type %diff{$ does not match super class method parameter type $does not match super class method parameter type}0,1 |
-Wswitch | enumeration value %0 not handled in switch |
-Wswitch | overflow converting case value to switch condition type (%0 to %1) |
-Wswitch | enumeration values %0 and %1 not handled in switch |
-Wswitch | case value not in enumerated type %0 |
-Wswitch | enumeration values %0, %1, and %2 not handled in switch |
-Wswitch | %0 enumeration values not handled in switch: %1, %2, %3... |
-Wswitch-enum | enumeration value %0 not explicitly handled in switch |
-Wswitch-enum | %0 enumeration values not explicitly handled in switch: %1, %2, %3... |
-Wswitch-enum | enumeration values %0 and %1 not explicitly handled in switch |
-Wswitch-enum | enumeration values %0, %1, and %2 not explicitly handled in switch |
-Wtautological-compare | %select{self-array }0comparison always evaluates to %select{false true a constant}1 |
-Wtautological-compare | comparison of unsigned%select{ enum}2 expression %0 is always %1 |
-Wtautological-compare | comparison of %0 unsigned%select{ enum}2 expression is always %1 |
-Wtautological-constant-out-of-range-compare | comparison of constant %0 with expression of type %1 is always %select{false true}2 |
-Wthread-safety-analysis | expecting mutex '%0' to be locked at the end of function |
-Wthread-safety-analysis | %select{reading writing}1 the value pointed to by '%0' requires locking %select{any mutex any mutex exclusively}1 |
-Wthread-safety-analysis | unlocking '%0' that was not locked |
-Wthread-safety-analysis | mutex '%0' is locked exclusively and shared in the same scope |
-Wthread-safety-analysis | expecting mutex '%0' to be locked at start of each loop |
-Wthread-safety-analysis | %select{reading writing}2 variable '%0' requires locking %select{'%1'\'%1' exclusively}2 |
-Wthread-safety-analysis | %select{reading writing}2 the value pointed to by '%0' requires locking %select{'%1'\'%1' exclusively}2 |
-Wthread-safety-analysis | calling function '%0' requires %select{shared exclusive}2 lock on '%1' |
-Wthread-safety-analysis | locking '%0' that is already locked |
-Wthread-safety-analysis | cannot resolve lock expression |
-Wthread-safety-analysis | cannot call function '%0' while mutex '%1' is locked |
-Wthread-safety-analysis | mutex '%0' is still locked at the end of function |
-Wthread-safety-analysis | mutex '%0' is not locked on every path through here |
-Wthread-safety-analysis | %select{reading writing}1 variable '%0' requires locking %select{any mutex any mutex exclusively}1 |
-Wthread-safety-attributes | %0 attribute only applies to %select{fields and global variables functions and methods classes and structs}1 |
-Wthread-safety-attributes | '%0' only applies to pointer types type here is %1 |
-Wthread-safety-attributes | %0 attribute can only be applied in a context annotated with 'lockable' attribute |
-Wthread-safety-attributes | ignoring %0 attribute because its argument is invalid |
-Wthread-safety-attributes | %0 attribute requires arguments whose type is annotated with 'lockable' attribute type here is '%1' |
-Wthread-safety-attributes | %0 attribute requires arguments that are class type or point to class type type here is '%1' |
-Wthread-safety-beta | Thread safety beta warning. |
-Wthread-safety-precise | calling function '%0' requires %select{shared exclusive}2 lock on '%1' |
-Wthread-safety-precise | %select{reading writing}2 the value pointed to by '%0' requires locking %select{'%1'\'%1' exclusively}2 |
-Wthread-safety-precise | %select{reading writing}2 variable '%0' requires locking %select{'%1' \'%1' exclusively}2 |
-Wtype-safety | argument type %0 doesn't match specified '%1' type tag %select{that requires %3 }2 |
-Wtype-safety | specified %0 type tag requires a null pointer |
-Wtype-safety | this type tag was not designed to be used with this function |
-Wundeclared-selector | undeclared selector %0 did you mean %1? |
-Wundeclared-selector | undeclared selector %0 |
-Wundefined-inline | inline function %q0 is not defined |
-Wundefined-internal | %select{function variable}0 %q1 has internal linkage but is not defined |
-Wundefined-reinterpret-cast | reinterpret_cast from %0 to %1 has undefined behavior |
-Wundefined-reinterpret-cast | dereference of type %1 that was reinterpret_cast from type %0 has undefined behavior |
-Wuninitialized | reference %0 is not yet bound to a value when used within its own initialization |
-Wuninitialized | block pointer variable %0 is uninitialized when captured by block |
-Wuninitialized | field %0 is uninitialized when used here |
-Wuninitialized | reference %0 is not yet bound to a value when used here |
-Wuninitialized | variable %0 is uninitialized when %select{used here captured by block}1 |
-Wuninitialized | variable %0 is uninitialized when used within its own initialization |
-Wunneeded-internal-declaration | 'static' function %0 declared in header file should be declared 'static inline' |
-Wunneeded-internal-declaration | %select{function variable}0 %1 is not needed and will not be emitted |
-Wunneeded-member-function | member function %0 is not needed and will not be emitted |
-Wunreachable-code | will never be executed |
-Wunsequenced | multiple unsequenced modifications to %0 |
-Wunsequenced | unsequenced modification and access to %0 |
-Wunsupported-friend | dependent nested name specifier '%0' for friend class declaration is not supported turning off access control for %1 |
-Wunsupported-friend | dependent nested name specifier '%0' for friend template declaration is not supported ignoring this friend declaration |
-Wunsupported-visibility | target does not support 'protected' visibility using 'default' |
-Wunused-comparison | %select{equality inequality}0 comparison result unused |
-Wunused-const-variable | unused variable %0 |
-Wunused-exception-parameter | unused exception parameter %0 |
-Wunused-function | unused function %0 |
-Wunused-label | unused label %0 |
-Wunused-member-function | unused member function %0 |
-Wunused-parameter | unused parameter %0 |
-Wunused-private-field | private field %0 is not used |
-Wunused-property-ivar ivar | %0 which backs the property is not referenced in this property's accessor |
-Wunused-result | ignoring return value of function declared with warn_unused_result attribute |
-Wunused-value | expression result unused should this cast be to 'void'? |
-Wunused-value | expression result unused |
-Wunused-value | ignoring return value of function declared with %0 attribute |
-Wunused-variable | unused variable %0 |
-Wunused-volatile-lvalue | expression result unused assign into a variable to force a volatile load |
-Wused-but-marked-unused | %0 was marked unused but was used |
-Wuser-defined-literals | user-defined literal suffixes not starting with '_' are reserved%select{ no literal will invoke this operator}0 |
-Wvarargs | second argument to 'va_arg' is of promotable type %0 this va_arg has undefined behavior because arguments will be promoted to %1 |
-Wvarargs | 'va_start' has undefined behavior with reference types |
-Wvarargs | second parameter of 'va_start' not last named argument |
-Wvector-conversion | incompatible vector types %select{%diff{assigning to $ from $ assigning to different types}0,1 %diff{passing $ to parameter of type $ passing to parameter of different type}0,1%diff{returning $ from a function with result type $ returning from function with different return type}0,1 %diff{converting $ to type $ converting between types}0,1 %diff{initializing $ with an expression of type $ initializing with expression of different type}0,1 %diff{sending $ to parameter of type $ sending to parameter of different type}0,1 %diff{casting $ to type $ casting between types}0,1}2 |
-Wvexing-parse | empty parentheses interpreted as a function declaration |
-Wvexing-parse | parentheses were disambiguated as a function declaration |
-Wvisibility | declaration of %0 will not be visible outside of this function |
-Wvisibility | redefinition of %0 will not be visible outside of this function |
-Wvla | variable length array used |
-Wvla-extension | variable length arrays are a C99 feature |
-Wweak-template-vtables | explicit template instantiation %0 will emit a vtable in every translation unit |
-Wweak-vtables | %0 has no out-of-line virtual method definitions; its vtable will be emitted in every translation unit |
Warning | Message |
---|---|
-Warc-bridge-casts-disallowed-in-nonarc | '%0' casts have no effect when not using ARC |
-Wattributes | unknown __declspec attribute %0 ignored |
-Wavailability | 'unavailable' availability overrides all other availability information |
-Wc++11-compat | use of right-shift operator ('') in template argument will require parentheses in C++11 |
-Wc++11-compat | 'auto' storage class specifier is redundant and incompatible with C++11 |
-Wc++98-c++11-compat | 'decltype(auto)' type specifier is incompatible with C++ standards before C++1y |
-Wc++98-compat | range-based for loop is incompatible with C++98 |
-Wc++98-compat | alias declarations are incompatible with C++98 |
-Wc++98-compat | in-class initialization of non-static data members is incompatible with C++98 |
-Wc++98-compat | defaulted function definitions are incompatible with C++98 |
-Wc++98-compat | rvalue references are incompatible with C++98 |
-Wc++98-compat | reference qualifiers on functions are incompatible with C++98 |
-Wc++98-compat | inline namespaces are incompatible with C++98 |
-Wc++98-compat | generalized initializer lists are incompatible with C++98 |
-Wc++98-compat | trailing return types are incompatible with C++98 |
-Wc++98-compat | enumeration types with a fixed underlying type are incompatible with C++98 |
-Wc++98-compat | alignof expressions are incompatible with C++98 |
-Wc++98-compat | '%0' keyword is incompatible with C++98 |
-Wc++98-compat | 'decltype' type specifier is incompatible with C++98 |
-Wc++98-compat | deleted function definitions are incompatible with C++98 |
-Wc++98-compat | consecutive right angle brackets are incompatible with C++98 (use '> >') |
-Wc++98-compat | static_assert declarations are incompatible with C++98 |
-Wc++98-compat | scoped enumerations are incompatible with C++98 |
-Wc++98-compat | lambda expressions are incompatible with C++98 |
-Wc++98-compat | attributes are incompatible with C++98 |
-Wc++98-compat | 'alignas' is incompatible with C++98 |
-Wc++98-compat | noexcept specifications are incompatible with C++98 |
-Wc++98-compat | literal operators are incompatible with C++98 |
-Wc++98-compat | noexcept expressions are incompatible with C++98 |
-Wc++98-compat | 'nullptr' is incompatible with C++98 |
-Wc++98-compat-pedantic | extra '' outside of a function is incompatible with C++98 |
-Wc++98-compat-pedantic | extern templates are incompatible with C++98 |
-Wc++98-compat-pedantic | commas at the end of enumerator lists are incompatible with C++98 |
-Wdangling-else | add explicit braces to avoid dangling else |
-Wdeprecated | Use of 'long' with '__vector' is deprecated |
-Wdeprecated-declarations | use of C-style parameters in Objective-C method declarations is deprecated |
-Wdeprecated-register | 'register' storage class specifier is deprecated |
-Wduplicate-decl-specifier | duplicate '%0' declaration specifier |
-Wextra-semi | extra ';' after member function definition |
-Wextra-tokens | "extra tokens at the end of '#pragma omp %0' are ignored |
-Wgcc-compat | GCC does not allow %0 attribute in this position on a function definition |
-Wignored-attributes | attribute %0 ignored, because it is not attached to a declaration |
-Wmicrosoft-exists | dependent %select{if_not_exists if_exists}0 declarations are ignored |
-Wmissing-selector-name | %0 used as the name of the previous parameter rather than as part of the selector |
-Wsemicolon-before-method-body | semicolon before method body is ignored |
-Wsource-uses-openmp | "unexpected '#pragma omp ...' in program |
-Wstatic-inline-explicit-instantiation | ignoring '%select{static inline}0' keyword on expli |