forked from Barro/compiler-warnings
-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathwarnings-messages-3.2.txt
1404 lines (1404 loc) · 81.7 KB
/
warnings-messages-3.2.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# enabled by default:
# -W (partial)
# -Wextra (partial)
# -Winitializer-overrides
# initializer overrides prior initialization of this subobject
# subobject initialization overrides initialization of other fields within its enclosing subobject
# -W#pragma-messages
# The text of this diagnostic is not controlled by Clang
# -W#warnings
# The text of this diagnostic is not controlled by Clang
# -Wabstract-final-class
# abstract class is marked 'final'
# -Waddress-of-array-temporary
# pointer is initialized by a temporary array, which will be destroyed at the end of the full-expression
# -Waddress-of-temporary
# taking the address of a temporary object of type A
# -Wall (partial)
# -Wmost (partial)
# -Wcast-of-sel-type
# cast of type A to B is deprecated; use sel_getName instead
# -Wcomment (partial)
# '/*' within block comment
# escaped newline between */ characters at block comment end
# -Wdelete-non-virtual-dtor (partial)
# delete called on A that is abstract but has non-virtual destructor
# -Wformat
# '<*|.*>' specified field <width|precision> is missing a matching 'int' argument
# <field width|precision> used with 'B' conversion specifier, resulting in undefined behavior
# cannot mix positional and non-positional arguments in format string
# data argument position 'A' exceeds the number of data arguments (B)
# field <width|precision> should have type B, but argument has type C
# flag 'A' is ignored when flag 'B' is present
# flag 'A' results in undefined behavior with 'B' conversion specifier
# format specifies type A but the argument has type B
# format string contains '\0' within the string body
# format string missing
# format string should not be a wide string
# incomplete format specifier
# invalid position specified for <field width|field precision>
# length modifier 'A' results in undefined behavior or no effect with 'B' conversion specifier
# more '%' conversions than data arguments
# no closing ']' for '%[' in scanf format string
# position arguments in format strings start counting at 1 (not 0)
# values of type 'A' should not be used as format arguments; add an explicit cast to B instead
# zero field width in scanf format string is unused
# -Wformat-extra-args
# data argument not used by format string
# -Wformat-invalid-specifier
# invalid conversion specifier 'A'
# -Wformat-security
# format string is not a string literal (potentially insecure)
# -Wformat-zero-length
# format string is empty
# -Wnonnull
# null passed to a callee which requires a non-null argument
# -Wimplicit (partial)
# -Wimplicit-function-declaration (partial)
# implicit declaration of function A is invalid in C99
# use of unknown builtin A
# -Wimplicit-int
# type specifier missing, defaults to 'int'
# -Wint-to-pointer-cast
# cast to B from smaller integer type A
# -Wmultichar
# multi-character character constant
# -Wobjc-missing-super-calls
# method possibly missing a [super A] call
# -Wprivate-extern
# use of __private_extern__ on a declaration may not produce external symbol private to the linkage unit and is deprecated
# -Wreturn-type
# <void function|void method|constructor|destructor> A should not return a value
# control may reach end of non-void function
# control may reach end of non-void lambda
# control reaches end of non-void function
# control reaches end of non-void lambda
# non-void <function|method> A should return a value
# -Wreturn-type-c-linkage
# A has C-linkage specified, but returns incomplete type B which could be incompatible with C
# A has C-linkage specified, but returns user-defined type B which is incompatible with C
# -Wself-assign (partial)
# -Wself-assign-field
# assigning <field|instance variable> to itself
# -Wsizeof-array-argument
# sizeof on array function parameter will return size of A instead of B
# -Wstring-plus-int
# adding A to a string does not append to the string
# -Wtrigraphs
# ignored trigraph would end block comment
# trigraph converted to 'A' character
# trigraph ends block comment
# trigraph ignored
# -Wuninitialized (partial)
# field A is uninitialized when used here
# reference A is not yet bound to a value when used here
# reference A is not yet bound to a value when used within its own initialization
# variable A is uninitialized when used within its own initialization
# -Wunknown-pragmas (partial)
# angle-bracketed include <A> cannot be aliased to double-quoted include "B"
# double-quoted include "A" cannot be aliased to angle-bracketed include <B>
# expected 'ON' or 'OFF' or 'DEFAULT' in pragma
# expected end of directive in pragma
# pragma STDC FENV_ACCESS ON is not supported, ignoring pragma
# pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'
# pragma diagnostic expected option name (e.g. "-Wundef")
# pragma diagnostic pop could not pop, no matching push
# pragma include_alias expected 'A'
# pragma include_alias expected include filename
# unexpected token in pragma diagnostic
# unknown pragma in STDC namespace
# unknown warning group 'A', ignored
# -Wunused (partial)
# -Wunused-value
# container access result unused - container access should not be used for side effects
# expression result unused
# expression result unused; should this cast be to 'void'?
# ignoring return value of function declared with A attribute
# property access result unused - getters should not be used for side effects
# -Wunused-comparison
# <equality|inequality> comparison result unused
# -Wunused-result
# ignoring return value of function declared with warn_unused_result attribute
# -Wparentheses
# A has lower precedence than B; B will be evaluated first
# operator '?:' has lower precedence than 'A'; 'A' will be evaluated first
# using the result of an assignment as a condition without parentheses
# -Wbitwise-op-parentheses
# '&' within '|'
# -Wdangling-else
# add explicit braces to avoid dangling else
# -Wlogical-op-parentheses
# '&&' within '||'
# -Wparentheses-equality
# equality comparison with extraneous parentheses
# -Wshift-op-parentheses
# operator 'A' has lower precedence than 'B'; 'B' will be evaluated first
# -Wswitch
# A enumeration values not handled in switch: B, C, D...
# case value not in enumerated type A
# enumeration value A not handled in switch
# enumeration values A and B not handled in switch
# enumeration values A, B, and C not handled in switch
# overflow converting case value to switch condition type (A to B)
# -Wambiguous-macro
# ambiguous expansion of macro A
# -Wambiguous-member-template
# lookup of A in member access expression is ambiguous; using member of B
# -Wanalyzer-incompatible-plugin
# checker plugin 'A' is not compatible with this version of the analyzer
# -Warc
# -Warc-non-pod-memaccess
# <destination for|source of> this B call is a pointer to ownership-qualified type C
# -Warc-retain-cycles
# capturing A strongly in this block is likely to lead to a retain cycle
# -Warc-unsafe-retained-assign
# assigning retained object to <weak|unsafe_unretained> <property|variable>; object will be released after assignment
# assigning retained object to unsafe property; object will be released after assignment
# -Warc-bridge-casts-disallowed-in-nonarc
# 'A' casts have no effect when not using ARC
# -Warc-performSelector-leaks
# performSelector may cause a leak because its selector is unknown
# -Warray-bounds
# 'static' has no effect on zero-length arrays
# array argument is too small; contains A elements, callee requires at least B
# array index A is before the beginning of the array
# array index A is past the end of the array (which contains B element(s))
# -Wasm
# -Wasm-operand-widths
# the size being stored is truncated, use a modifier to specify the size
# -Watomic-property-with-user-defined-accessor
# writable atomic property A cannot pair a synthesized <getter|setter> with a user defined <getter|setter>
# -Wattributes
# unknown __declspec attribute A ignored
# unknown attribute A ignored
# -Wauto-storage-class
# 'auto' storage class specifier is not permitted in C++11, and will not be supported in future releases
# -Wauto-var-id
# 'auto' deduced as 'id' in declaration of A
# -Wavailability
# 'unavailable' availability overrides all other availability information
# availability does not match previous declaration
# feature cannot be <introduced|deprecated|obsoleted> in B version C before it was <introduced|deprecated|obsoleted> in version E; attribute ignored
# unknown platform A in availability macro
# -Wbackslash-newline-escape
# backslash and newline separated by space
# -Wbad-array-new-length
# array is too large (A elements)
# array size is negative
# -Wbind-to-temporary-copy (partial)
# C++98 requires an accessible copy constructor for class C when binding a reference to a temporary; was <private|protected>
# no viable constructor <copying variable|copying parameter|returning object|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element|capturing value> of type B; C++98 requires a copy constructor when binding a reference to a temporary
# -Wbool-conversions
# -Wbool-conversion
# address of function A will always evaluate to 'true'
# initialization of pointer of type A to null from a constant boolean expression
# -Wbuiltin-macro-redefined
# redefining builtin macro
# -Wbuiltin-requires-header
# declaration of built-in function 'A' requires inclusion of the header <setjmp.h>
# declaration of built-in function 'A' requires inclusion of the header <stdio.h>
# declaration of built-in function 'A' requires inclusion of the header <ucontext.h>
# -Wc++0x-compat (partial)
# -Wc++11-compat (partial)
# use of right-shift operator ('>>') in template argument will require parentheses in C++11
# -Wc++11-narrowing (partial)
# <case value|enumerator value|non-type template argument> <cannot be narrowed from type C to D|evaluates to C, which cannot be narrowed to type D>
# constant expression evaluates to A which cannot be narrowed to type B
# non-constant-expression cannot be narrowed from type A to B in initializer list
# type A cannot be narrowed to B in initializer list
# -Wc++0x-extensions (partial)
# -Wc++11-extensions (partial)
# 'A' keyword is a C++11 extension
# 'auto' type specifier is a C++11 extension
# 'template' keyword outside of a template
# 'typename' occurs outside of a template
# alias declarations are a C++11 extension
# default template arguments for a function template are a C++11 extension
# defaulted function definitions are a C++11 extension
# deleted function definitions are a C++11 extension
# explicit conversion functions are a C++11 extension
# first declaration of <class template|class template partial|function template|member function|static data member|member class|member enumeration> specialization of B outside namespace C is a C++11 extension
# generalized initializer lists are a C++11 extension
# in-class initialization of non-static data member is a C++11 extension
# inline namespaces are a C++11 feature
# non-class friend type A is a C++11 extension
# non-type template argument referring to <function|object> B with internal linkage is a C++11 extension
# range-based for loop is a C++11 extension
# reference qualifiers on functions are a C++11 extension
# rvalue references are a C++11 extension
# static data member A in union is a C++11 extension
# unelaborated friend declaration is a C++11 extension; specify '<struct|interface|union|class|enum>' to befriend B
# variadic templates are a C++11 extension
# -Wc++0x-narrowing (partial)
# -Wc++11-narrowing (partial)
# <case value|enumerator value|non-type template argument> <cannot be narrowed from type C to D|evaluates to C, which cannot be narrowed to type D>
# constant expression evaluates to A which cannot be narrowed to type B
# non-constant-expression cannot be narrowed from type A to B in initializer list
# type A cannot be narrowed to B in initializer list
# -Wc99-extensions (partial)
# ISO C99 requires whitespace after the macro name
# -WCFString-literal
# input conversion stopped due to an input byte that does not belong to the input codeset UTF-8
# -Wcomments (partial)
# -Wcomment (partial)
# '/*' within block comment
# escaped newline between */ characters at block comment end
# -Wcompare-distinct-pointer-types
# comparison of distinct pointer types
# comparison of distinct pointer types (A and B) uses non-standard composite pointer type C
# -Wconditional-type-mismatch
# pointer/integer type mismatch in conditional expression
# -Wconstant-logical-operand
# use of logical 'A' with constant operand
# -Wconversion-null
# -Wnull-conversion
# implicit conversion of NULL constant to A
# -Wdangling-field
# binding reference member A to a temporary value
# binding reference member A to stack allocated parameter B
# initializing pointer member A with the stack address of parameter B
# -Wdangling-initializer-list
# array backing the initializer list will be destroyed at the end of <the full-expression|the constructor>
# -Wdefault-arg-special-member
# addition of default argument on redeclaration makes this constructor a <default|copy|move> constructor
# -Wdelegating-ctor-cycles
# constructor for A creates a delegation cycle
# -Wdelete-incomplete
# deleting pointer to incomplete type A may cause undefined behaviour
# -Wdeprecated
# Use of 'long' with '__vector' is deprecated
# access declarations are deprecated; use using declarations instead
# argument 'A' is deprecated, use 'B' instead
# incrementing expression of type bool is deprecated
# treating 'A' input as 'B' when in C++ mode, this behavior is deprecated
# -Wdeprecated-declarations
# A is deprecated
# A is deprecated: B
# A maybe deprecated because receiver type is unknown
# use of C-style parameters in Objective-C method declarations is deprecated
# -Wdeprecated-objc-isa-usage
# direct access to objective-c's isa is deprecated in favor of object_setClass() and object_getClass()
# -Wdistributed-object-modifiers
# conflicting distributed object modifiers on parameter type in implementation of A
# conflicting distributed object modifiers on return type in implementation of A
# -Wdivision-by-zero
# division by zero is undefined
# remainder by zero is undefined
# -Wduplicate-decl-specifier
# duplicate 'A' declaration specifier
# -Wdynamic-class-memaccess
# <destination for|source of|first operand of|second operand of> this B call is a pointer to dynamic class C; vtable pointer will be <overwritten|copied|moved|compared>
# -Wempty-body
# for loop has empty body
# if statement has empty body
# range-based for loop has empty body
# switch statement has empty body
# while loop has empty body
# -Wendif-labels
# -Wextra-tokens
# extra tokens at end of #A directive
# -Wenum-compare
# comparison of two values with different enumeration types
# -Wextern-initializer
# 'extern' variable has an initializer
# -Wformat=2 (partial)
# -Wformat-nonliteral (partial)
# -Wformat-security
# format string is not a string literal (potentially insecure)
# -Wformat-security
# format string is not a string literal (potentially insecure)
# -Wgcc-compat
# GCC does not allow A attribute in this position on a function definition
# -Wgnu (partial)
# field A with variable sized type B not at the end of a struct or class is a GNU extension
# in-class initializer for static data member of type A is a GNU extension
# -Wgnu-designator (partial)
# use of GNU 'missing =' extension in designator
# use of GNU old-style field designator extension
# -Wgnu-array-member-paren-init
# parenthesized initialization of a member array is a GNU extension
# -Wignored-attributes
# 'A' attribute argument not supported: B
# 'A' only applies to Objective-C object or block pointer types; type here is B
# 'A' only applies to function types; type here is B
# 'A' only applies to pointer types; type here is B
# 'gnu_inline' attribute requires function to be marked 'inline', attribute ignored
# 'malloc' attribute only applies to functions returning a pointer type
# 'nonnull' attribute applied to function with no pointer arguments
# 'sentinel' attribute only supported for variadic <functions|blocks>
# 'sentinel' attribute requires named arguments
# 'weak_import' attribute cannot be specified on a definition
# <alignment|size> of field B (C bits) does not match the <alignment|size> of the first field in transparent union; transparent_union attribute ignored
# A attribute can only be applied to instance variables or properties
# A attribute ignored
# A attribute ignored for field of type B
# A attribute only applies to <Objective-C object|pointer> parameters
# A attribute only applies to <functions|methods> that return <an Objective-C object|a pointer|a non-retainable pointer>
# A attribute only applies to <functions|unions|variables and functions|functions and methods|parameters|functions, methods and blocks|functions, methods, and parameters|classes|variables|methods|variables, functions and labels|fields and global variables|structs|variables, functions and tag types|thread-local variables>
# A only applies to variables with static storage duration and functions
# Objective-C GC does not allow weak variables on the stack
# __declspec attribute A is not supported
# __weak attribute cannot be specified on a field declaration
# __weak attribute cannot be specified on an automatic variable when ARC is not enabled
# attribute A after definition is ignored
# attribute A cannot be applied to <functions|Objective-C method> without return value
# attribute A cannot be specified on a statement
# attribute A ignored, because it is not attached to a declaration
# attribute A is already applied with different parameters
# attribute A is ignored, place it after "<class|struct|union|interface|enum>" to apply attribute to type declaration
# attribute declaration must precede definition
# calling convention A ignored for this target
# first field of a transparent union cannot have <floating point|vector> type B; transparent_union attribute ignored
# ibaction attribute can only be applied to Objective-C instance methods
# transparent union definition must contain at least one field; transparent_union attribute ignored
# transparent_union attribute can only be applied to a union definition; attribute ignored
# unknown attribute 'A'
# unknown visibility 'A'
# -Wimplicit-conversion-floating-point-to-bool
# implicit conversion turns floating-point number into bool: A to B
# -Wimplicit-exception-spec-mismatch
# function previously declared with an <explicit|implicit> exception specification redeclared with an <implicit|explicit> exception specification
# -Wimplicit-fallthrough (partial)
# fallthrough annotation does not directly precede switch label
# fallthrough annotation in unreachable code
# -Wincompatible-pointer-types
# <assigning to different types|passing to parameter of different type|returning from function with different return type|converting between types|initializing with expression of different type|sending to parameter of different type|casting between types> discards qualifiers
# <assigning to different types|passing to parameter of different type|returning from function with different return type|converting between types|initializing with expression of different type|sending to parameter of different type|casting between types> discards qualifiers in nested pointer types
# incompatible pointer types <assigning to different types|passing to parameter of different type|returning from function with different return type|converting between types|initializing with expression of different type|sending to parameter of different type|casting between types>[; dereference with *|; take the address with &|; remove *|; remove &]
# -Wincomplete-implementation
# incomplete implementation
# -Wincomplete-umbrella
# missing submodule 'A'
# umbrella header does not include header 'A'
# -Wint-conversions
# -Wint-conversion
# incompatible integer to pointer conversion <assigning to different types|passing to parameter of different type|returning from function with different return type|converting between types|initializing with expression of different type|sending to parameter of different type|casting between types>[; dereference with *|; take the address with &|; remove *|; remove &]
# incompatible pointer to integer conversion <assigning to different types|passing to parameter of different type|returning from function with different return type|converting between types|initializing with expression of different type|sending to parameter of different type|casting between types>[; dereference with *|; take the address with &|; remove *|; remove &]
# -Winvalid-constexpr
# constexpr <function|constructor> never produces a constant expression
# -Winvalid-iboutlet
# <instance variable|property> with A attribute must be an object type (invalid B)
# -Winvalid-noreturn
# function A declared 'noreturn' should not return
# function declared 'noreturn' should not return
# -Winvalid-offsetof
# offset of on non-POD type A
# offset of on non-standard-layout type A
# -Winvalid-pp-token
# empty character constant
# missing terminating ' character
# missing terminating '"' character
# -Winvalid-source-encoding
# illegal character encoding in character literal
# illegal character encoding in string literal
# -Winvalid-token-paste
# pasting formed 'A', an invalid preprocessing token
# -Wknr-promoted-parameter
# promoted type of K&R function parameter is not compatible with parameter type declared in a previous prototype
# -Wlambda-extensions
# C++11 forbids default arguments for lambda expressions
# -Wlarge-by-value-copy
# A is a large (B bytes) pass-by-value argument; pass it by reference instead ?
# return value of A is a large (B bytes) pass-by-value object; pass it by reference instead ?
# -Wlocal-type-template-args (partial)
# template argument uses local type A
# -Wmain
# 'main' should not be declared static
# only one parameter on 'main' declaration
# -Wmain-return-type
# return type of 'main' is not 'int'
# -Wmalformed-warning-check
# __has_warning expected option name (e.g. "-Wundef")
# -Wmicrosoft (partial)
# MS-style inline assembly is not supported
# anonymous structs are a Microsoft extension
# enumerator value is not representable in the underlying type A
# exception specification of overriding function is more lax than base version
# explicit constructor calls are a Microsoft extension
# explicit specialization of A within class scope is a Microsoft extension
# extra qualification on member A
# function definition with pure-specifier is a Microsoft extension
# goto into protected scope
# pseudo-destructors on type void are a Microsoft extension
# use of identifier A found via unqualified lookup into dependent bases of class templates is a Microsoft extension
# using declaration referring to inaccessible member 'A' (which refers to accessible member 'B') is a Microsoft compatibility extension
# -Wmicrosoft-exists
# dependent <__if_not_exists|__if_exists> declarations are ignored
# -Wmismatched-method-attributes
# attributes on method implementation and its declaration must match
# -Wmismatched-parameter-types
# conflicting parameter types in implementation of A
# -Wmismatched-return-types
# conflicting return type in implementation of A
# -Wmissing-declarations
# declaration does not declare anything
# typedef requires a name
# -Wmissing-selector-name
# A used as the name of the previous parameter rather than as part of the selector
# -Wnarrowing (partial)
# -Wc++11-narrowing (partial)
# <case value|enumerator value|non-type template argument> <cannot be narrowed from type C to D|evaluates to C, which cannot be narrowed to type D>
# constant expression evaluates to A which cannot be narrowed to type B
# non-constant-expression cannot be narrowed from type A to B in initializer list
# type A cannot be narrowed to B in initializer list
# -Wnon-gcc (partial)
# -Wconversion (partial)
# -Wbool-conversion
# address of function A will always evaluate to 'true'
# initialization of pointer of type A to null from a constant boolean expression
# -Wconstant-conversion
# implicit conversion from C to D changes value from A to B
# implicit truncation from C to bitfield changes value from A to B
# -Wenum-conversion
# implicit conversion from enumeration type A to different enumeration type B
# -Wint-conversion
# incompatible integer to pointer conversion <assigning to different types|passing to parameter of different type|returning from function with different return type|converting between types|initializing with expression of different type|sending to parameter of different type|casting between types>[; dereference with *|; take the address with &|; remove *|; remove &]
# incompatible pointer to integer conversion <assigning to different types|passing to parameter of different type|returning from function with different return type|converting between types|initializing with expression of different type|sending to parameter of different type|casting between types>[; dereference with *|; take the address with &|; remove *|; remove &]
# -Wliteral-conversion
# implicit conversion from A to B changes value from C to D
# -Wnon-literal-null-conversion
# expression which evaluates to zero treated as a null pointer constant of type A
# -Wnull-conversion
# implicit conversion of NULL constant to A
# -Wliteral-range
# magnitude of floating-point constant too large for type A; maximum is B
# magnitude of floating-point constant too small for type A; minimum is B
# -Wnon-pod-varargs
# cannot pass <non-POD|non-trivial> object of type B to variadic <function|block|method|constructor>; expected type from format string was D
# cannot pass object of <non-POD|non-trivial> type B through variadic <function|block|method|constructor>; call will abort at runtime
# second argument to 'va_arg' is of ARC ownership-qualified type A
# second argument to 'va_arg' is of non-POD type A
# -WNSObject-attribute
# __attribute ((NSObject)) may be put on a typedef only, attribute is ignored
# -Wnull-arithmetic
# comparison between NULL and non-pointer <(B and NULL)|(NULL and B)>
# use of NULL in arithmetic operation
# -Wnull-character
# null character ignored
# null character(s) preserved in character literal
# null character(s) preserved in string literal
# -Wnull-dereference
# indirection of non-volatile null pointer will be deleted, not trap
# -Wobjc-autosynthesis-property-ivar-name-match
# autosynthesized property A will use [synthesized] instance variable C, not existing instance variable D
# -Wobjc-cocoa-api
# -Wobjc-redundant-api-use
# -Wobjc-redundant-literal-use
# using A with a literal is redundant
# -Wobjc-forward-class-redefinition
# redefinition of forward class A of a typedef name of an object type is ignored
# -Wobjc-literal-compare
# direct comparison of [an array literal|a dictionary literal|a numeric literal|a boxed expression] has undefined behavior
# -Wobjc-string-compare
# direct comparison of a string literal has undefined behavior
# -Wobjc-method-access
# class method A not found (return type defaults to 'id')
# instance method A found instead of class method B
# instance method A is being used on 'Class' which is not in the root class
# instance method A not found (return type defaults to 'id')
# -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 A requires method B to be defined - use @dynamic or provide a method implementation in this category
# property A requires method B to be defined - use @synthesize, @dynamic or provide a method implementation in this class implementation
# -Wobjc-property-matches-cocoa-ownership-rule
# property's synthesized getter follows Cocoa naming convention for returning 'owned' objects
# -Wobjc-property-no-attribute
# default property attribute 'assign' not appropriate for non-GC object
# no 'assign', 'retain', or 'copy' attribute is specified - 'assign' is assumed
# -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-readonly-with-setter-property
# setter cannot be specified for a readonly property
# -Wobjc-root-class
# class A defined without specifying a base class
# -Wout-of-line-declaration
# out-of-line declaration of a member must be a definition
# -Wpointer-sign
# <assigning to different types|passing to parameter of different type|returning from function with different return type|converting between types|initializing with expression of different type|sending to parameter of different type|casting between types> converts between pointers to integer types with different sign
# -Wpointer-type-mismatch
# pointer type mismatch
# -Wpredefined-identifier-outside-function
# predefined identifier is only valid inside function
# -Wprotocol
# method A in protocol not implemented
# -Wreadonly-iboutlet-property
# readonly IBOutlet property when auto-synthesized may not work correctly with 'nib' loader
# -Wreceiver-expr
# receiver type A is not 'id' or interface pointer, consider casting it to 'id'
# -Wreceiver-forward-class (partial)
# receiver A is a forward class and corresponding @interface may not exist
# -Wrequires-super-attribute
# A attribute cannot be applied to <methods in protocols|dealloc>
# -Wreserved-user-defined-literal (partial)
# invalid suffix on literal; C++11 requires a space between literal and identifier
# -Wreturn-stack-address
# address of stack memory associated with local variable A returned
# reference to stack memory associated with local variable A returned
# returning address of label, which is local
# returning address of local temporary object
# returning reference to local temporary object
# -Wsection
# section does not match previous declaration
# -Wsentinel
# missing sentinel in <function call|method dispatch|block call>
# not enough variable arguments in A declaration to fit a sentinel
# -Wserialized-diagnostics
# unable to open file A for serializing diagnostics (B)
# -Wshadow-ivar
# local declaration of A hides instance variable
# -Wshift-count-negative
# shift count is negative
# -Wshift-count-overflow
# shift count >= width of type
# -Wshift-overflow
# signed shift result (A) requires B bits to represent, but C only has D bits
# -Wsizeof-pointer-memaccess
# 'A' call operates on objects of type B while the size is based on a different type C
# argument to 'sizeof' in A call is the same pointer type B as the <destination|source>; expected D or an explicit length
# -Wstatic-in-inline (partial)
# static <function|variable> B is used in an inline function with external linkage
# -Wstring-compare
# result of comparison against <a string literal|@encode> is unspecified (use strncmp instead)
# -Wstrlcpy-strlcat-size
# size argument in A call appears to be size of the source; expected the size of the destination
# -Wstrncat-size
# size argument in 'strncat' call appears to be size of the source
# the value of the size argument in 'strncat' is too large, might lead to a buffer overflow
# the value of the size argument to 'strncat' is wrong
# -Wtautological-compare
# <self-|array >comparison always evaluates to <false|true|a constant>
# comparison of A unsigned[ enum] expression is always B
# comparison of unsigned[ enum] expression A is always B
# -Wtautological-constant-out-of-range-compare
# comparison of constant A with expression of type B is always <false|true>
# -Wtentative-definition-incomplete-type
# tentative definition of variable with internal linkage has incomplete non-array type A
# -Wtype-safety
# argument type A doesn't match specified 'B' type tag [that requires D]
# specified A type tag requires a null pointer
# this type tag was not designed to be used with this function
# -Wtypedef-redefinition
# redefinition of typedef A is a C11 feature
# -Wtypename-missing
# missing 'typename' prior to dependent type name 'AB'
# -Wunicode
# unicode escape sequences are only valid in C99 or C++
# -Wunknown-warning-option
# unknown A warning specifier: 'B'
# unknown warning option 'A'
# unknown warning option 'A'; did you mean 'B'?
# -Wunnamed-type-template-args (partial)
# template argument uses unnamed type
# -Wunsupported-visibility
# target does not support 'protected' visibility; using 'default'
# -Wunused-command-line-argument
# A: 'B' input unused in cpp mode
# A: 'B' input unused[ when 'D' is present]
# A: previously preprocessed input[ unused when 'C' is present]
# argument unused during compilation: 'A'
# joined argument expects additional value: 'A'
# -Wunused-volatile-lvalue
# expression result unused; assign into a variable to force a volatile load
# -Wuser-defined-literals
# user-defined literal suffixes not starting with '_' are reserved; no literal will invoke this operator
# -Wvexing-parse
# empty parentheses interpreted as a function declaration
# parentheses were disambiguated as a function declaration
# -Wvisibility
# declaration of A will not be visible outside of this function
# redefinition of A will not be visible outside of this function
# -Wwrite-strings
# -Wdeprecated-writable-strings
# conversion from string literal to A is deprecated
-W
# -Wextra
# -Wignored-qualifiers
# 'A' type qualifier(s) on return type <has|have> no effect
# -Winitializer-overrides
# initializer overrides prior initialization of this subobject
# subobject initialization overrides initialization of other fields within its enclosing subobject
# -Wmissing-field-initializers
# missing field 'A' initializer
# -Wmissing-method-return-type
# method has no return type specified; defaults to 'id'
# -Wsemicolon-before-method-body
# semicolon before method body is ignored
# -Wsign-compare
# comparison of integers of different signs: A and B
# -Wunused-parameter
# unused parameter A
-Wabi # IGNORED switch
-Waddress # IGNORED switch
-Waggregate-return # IGNORED switch
-Wall
# -Wmost
# -Wcast-of-sel-type
# cast of type A to B is deprecated; use sel_getName instead
# -Wchar-subscripts
# array subscript is of type 'char'
# -Wcomment
# '/*' within block comment
# // comments are not allowed in this language
# escaped newline between */ characters at block comment end
# multi-line // comment
# -Wdelete-non-virtual-dtor
# delete called on A that has virtual functions but non-virtual destructor
# delete called on A that is abstract but has non-virtual destructor
# -Wformat
# '<*|.*>' specified field <width|precision> is missing a matching 'int' argument
# <field width|precision> used with 'B' conversion specifier, resulting in undefined behavior
# cannot mix positional and non-positional arguments in format string
# data argument position 'A' exceeds the number of data arguments (B)
# field <width|precision> should have type B, but argument has type C
# flag 'A' is ignored when flag 'B' is present
# flag 'A' results in undefined behavior with 'B' conversion specifier
# format specifies type A but the argument has type B
# format string contains '\0' within the string body
# format string missing
# format string should not be a wide string
# incomplete format specifier
# invalid position specified for <field width|field precision>
# length modifier 'A' results in undefined behavior or no effect with 'B' conversion specifier
# more '%' conversions than data arguments
# no closing ']' for '%[' in scanf format string
# position arguments in format strings start counting at 1 (not 0)
# values of type 'A' should not be used as format arguments; add an explicit cast to B instead
# zero field width in scanf format string is unused
# -Wformat-extra-args
# data argument not used by format string
# -Wformat-invalid-specifier
# invalid conversion specifier 'A'
# -Wformat-security
# format string is not a string literal (potentially insecure)
# -Wformat-y2k # IGNORED switch
# -Wformat-zero-length
# format string is empty
# -Wnonnull
# null passed to a callee which requires a non-null argument
# -Wimplicit
# -Wimplicit-function-declaration
# implicit declaration of function A
# implicit declaration of function A is invalid in C99
# use of unknown builtin A
# -Wimplicit-int
# type specifier missing, defaults to 'int'
# -Wint-to-pointer-cast
# cast to B from smaller integer type A
# -Wmismatched-tags
# <struct|interface|class>[ template] C was previously declared as a <struct|interface|class>[ template]
# C defined as <a struct|an interface|a class>[ template] here but previously declared as <a struct|an interface|a class>[ template]
# -Wmissing-braces
# suggest braces around initialization of subobject
# -Wmultichar
# multi-character character constant
# -Wobjc-missing-super-calls
# method possibly missing a [super A] call
# -Woverloaded-virtual
# A hides overloaded virtual <function|functions>
# -Wprivate-extern
# use of __private_extern__ on a declaration may not produce external symbol private to the linkage unit and is deprecated
# -Wreorder
# <field|base class> B will be initialized after <field|base> D
# -Wreturn-type
# <void function|void method|constructor|destructor> A should not return a value
# control may reach end of non-void function
# control may reach end of non-void lambda
# control reaches end of non-void function
# control reaches end of non-void lambda
# non-void <function|method> A should return a value
# -Wreturn-type-c-linkage
# A has C-linkage specified, but returns incomplete type B which could be incompatible with C
# A has C-linkage specified, but returns user-defined type B which is incompatible with C
# -Wself-assign
# explicitly assigning a variable of type A to itself
# -Wself-assign-field
# assigning <field|instance variable> to itself
# -Wsizeof-array-argument
# sizeof on array function parameter will return size of A instead of B
# -Wstring-plus-int
# adding A to a string does not append to the string
# -Wtrigraphs
# ignored trigraph would end block comment
# trigraph converted to 'A' character
# trigraph ends block comment
# trigraph ignored
# -Wuninitialized
# block pointer variable A is uninitialized when captured by block
# field A is uninitialized when used here
# reference A is not yet bound to a value when used here
# reference A is not yet bound to a value when used within its own initialization
# variable A is uninitialized when <used here|captured by block>
# variable A is uninitialized when used within its own initialization
# -Wsometimes-uninitialized
# variable A is <used|captured> uninitialized whenever <'D' condition is <true|false>|'D' loop <is entered|exits because its condition is false>|'D' loop <condition is true|exits because its condition is false>|switch D is taken>
# -Wunknown-pragmas
# angle-bracketed include <A> cannot be aliased to double-quoted include "B"
# double-quoted include "A" cannot be aliased to angle-bracketed include <B>
# expected 'ON' or 'OFF' or 'DEFAULT' in pragma
# expected end of directive in pragma
# pragma STDC FENV_ACCESS ON is not supported, ignoring pragma
# pragma diagnostic expected 'error', 'warning', 'ignored', 'fatal', 'push', or 'pop'
# pragma diagnostic expected option name (e.g. "-Wundef")
# pragma diagnostic pop could not pop, no matching push
# pragma include_alias expected 'A'
# pragma include_alias expected include filename
# unexpected token in pragma diagnostic
# unknown pragma ignored
# unknown pragma in STDC namespace
# unknown warning group 'A', ignored
# -Wunused
# -Wunused-argument # IGNORED switch
# -Wunused-function
# unused function A
# -Wunneeded-internal-declaration
# 'static' function A declared in header file should be declared 'static inline'
# <function|variable> B is not needed and will not be emitted
# -Wunused-label
# unused label A
# -Wunused-private-field
# private field A is not used
# -Wunused-value
# container access result unused - container access should not be used for side effects
# expression result unused
# expression result unused; should this cast be to 'void'?
# ignoring return value of function declared with A attribute
# property access result unused - getters should not be used for side effects
# -Wunused-comparison
# <equality|inequality> comparison result unused
# -Wunused-result
# ignoring return value of function declared with warn_unused_result attribute
# -Wunused-variable
# unused variable A
# -Wvolatile-register-var # IGNORED switch
# -Wparentheses
# A has lower precedence than B; B will be evaluated first
# operator '?:' has lower precedence than 'A'; 'A' will be evaluated first
# using the result of an assignment as a condition without parentheses
# -Wbitwise-op-parentheses
# '&' within '|'
# -Wdangling-else
# add explicit braces to avoid dangling else
# -Wlogical-op-parentheses
# '&&' within '||'
# -Wparentheses-equality
# equality comparison with extraneous parentheses
# -Wshift-op-parentheses
# operator 'A' has lower precedence than 'B'; 'B' will be evaluated first
# -Wswitch
# A enumeration values not handled in switch: B, C, D...
# case value not in enumerated type A
# enumeration value A not handled in switch
# enumeration values A and B not handled in switch
# enumeration values A, B, and C not handled in switch
# overflow converting case value to switch condition type (A to B)
-Warc-abi # IGNORED switch
-Warc-repeated-use-of-weak
# weak <variable|property|implicit property|instance variable> B is accessed multiple times in this <function|method|block|lambda> but may be unpredictably set to nil; assign to a strong variable to keep the object alive
# -Warc-maybe-repeated-use-of-weak
# weak <variable|property|implicit property|instance variable> B may be accessed multiple times in this <function|method|block|lambda> and may be unpredictably set to nil; assign to a strong variable to keep the object alive
-Warray-bounds-pointer-arithmetic
# the pointer decremented by A refers before the beginning of the array
# the pointer incremented by A refers past the end of the array (that contains B element(s))
-Wassign-enum
# integer constant not in range of enumerated type A
-Watomic-properties
# -Wcustom-atomic-properties
# atomic by default property A has a user defined <getter|setter> (property should be marked 'atomic' if this is intended)
# -Wimplicit-atomic-properties
# property is assumed atomic by default
# property is assumed atomic when auto-synthesizing the property
-Wauto-import
# treating #<include|import|include_next|__include_macros> as an import of module 'B'
-Wbad-function-cast
# cast from function call of type A to non-matching type B
-Wbind-to-temporary-copy
# C++98 requires an accessible copy constructor for class C when binding a reference to a temporary; was <private|protected>
# no viable constructor <copying variable|copying parameter|returning object|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element|capturing value> of type B; C++98 requires a copy constructor when binding a reference to a temporary
# -Wc++98-compat-bind-to-temporary-copy
# <copying variable|copying parameter|returning object|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element> of type C when binding a reference to a temporary would <invoke an inaccessible constructor|find no viable constructor|find ambiguous constructors|invoke a deleted constructor> in C++98
-Wc++-compat
# empty <struct|union> has size 0 in C, size 1 in C++
-Wc++0x-compat
# -Wc++11-compat
# 'A' is a keyword in C++11
# 'auto' storage class specifier is redundant and incompatible with C++11
# explicit instantiation cannot be 'inline'
# explicit instantiation of A must occur at global scope
# explicit instantiation of A must occur in namespace B
# explicit instantiation of A not in a namespace enclosing B
# identifier after literal will be treated as a user-defined literal suffix in C++11
# use of right-shift operator ('>>') in template argument will require parentheses in C++11
# -Wc++11-compat-reserved-user-defined-literal
# identifier after literal will be treated as a reserved user-defined literal suffix in C++11
# -Wc++11-narrowing
# <case value|enumerator value|non-type template argument> <cannot be narrowed from type C to D|evaluates to C, which cannot be narrowed to type D>
# constant expression evaluates to A which cannot be narrowed to type B
# constant expression evaluates to A which cannot be narrowed to type B in C++11
# non-constant-expression cannot be narrowed from type A to B in initializer list
# non-constant-expression cannot be narrowed from type A to B in initializer list in C++11
# type A cannot be narrowed to B in initializer list
# type A cannot be narrowed to B in initializer list in C++11
-Wc++0x-extensions
# -Wc++11-extensions
# 'A' keyword is a C++11 extension
# 'auto' type specifier is a C++11 extension
# 'template' keyword outside of a template
# 'typename' occurs outside of a template
# alias declarations are a C++11 extension
# commas at the end of enumerator lists are a C++11 extension
# default template arguments for a function template are a C++11 extension
# defaulted function definitions are a C++11 extension
# deleted function definitions are a C++11 extension
# enumeration types with a fixed underlying type are a C++11 extension
# explicit conversion functions are a C++11 extension
# explicit instantiation of A that occurs after an explicit specialization will be ignored (C++11 extension)
# extern templates are a C++11 extension
# first declaration of <class template|class template partial|function template|member function|static data member|member class|member enumeration> specialization of B outside namespace C is a C++11 extension
# generalized initializer lists are a C++11 extension
# implicit conversion from array size expression of type A to <integral|enumeration> type C is a C++11 extension
# in-class initialization of non-static data member is a C++11 extension
# inline namespaces are a C++11 feature
# non-class friend type A is a C++11 extension
# non-type template argument referring to <function|object> B with internal linkage is a C++11 extension
# range-based for loop is a C++11 extension
# reference qualifiers on functions are a C++11 extension
# rvalue references are a C++11 extension
# static data member A in union is a C++11 extension
# unelaborated friend declaration is a C++11 extension; specify '<struct|interface|union|class|enum>' to befriend B
# variadic templates are a C++11 extension
# -Wc++11-extra-semi
# extra ';' outside of a function is a C++11 extension
# -Wc++11-long-long
# 'long long' is a C++11 extension
-Wc++0x-narrowing
# -Wc++11-narrowing
# <case value|enumerator value|non-type template argument> <cannot be narrowed from type C to D|evaluates to C, which cannot be narrowed to type D>
# constant expression evaluates to A which cannot be narrowed to type B
# constant expression evaluates to A which cannot be narrowed to type B in C++11
# non-constant-expression cannot be narrowed from type A to B in initializer list
# non-constant-expression cannot be narrowed from type A to B in initializer list in C++11
# type A cannot be narrowed to B in initializer list
# type A cannot be narrowed to B in initializer list in C++11
-Wc++98-compat-pedantic
# #line number greater than 32767 is incompatible with C++98
# 'long long' is incompatible with C++98
# C++98 requires newline at end of file
# cast between pointer-to-function and pointer-to-object is incompatible with C++98
# commas at the end of enumerator lists are incompatible with C++98
# empty macro arguments are incompatible with C++98
# explicit instantiation of A that occurs after an explicit specialization is incompatible with C++98
# extern templates are incompatible with C++98
# extra ';' outside of a function is incompatible with C++98
# implicit conversion from array size expression of type A to <integral|enumeration> type C is incompatible with C++98
# variadic macros are incompatible with C++98
# -Wc++98-compat
# '<::' is treated as digraph '<:' (aka '[') followed by ':' in C++98
# 'A' keyword is incompatible with C++98
# 'A' type specifier is incompatible with C++98
# 'alignas' is incompatible with C++98
# 'auto' type specifier is incompatible with C++98
# 'constexpr' specifier is incompatible with C++98
# 'decltype' type specifier is incompatible with C++98
# 'nullptr' is incompatible with C++98
# <anonymous struct|union> member B with a non-trivial <constructor|copy constructor|move constructor|copy assignment operator|move assignment operator|destructor> is incompatible with C++98
# <class template|class template partial|function template|member function|static data member|member class|member enumeration> specialization of B outside namespace C is incompatible with C++98
# alias declarations are incompatible with C++98
# alignof expressions are incompatible with C++98
# attributes are incompatible with C++98
# befriending B without '<struct|interface|union|class|enum>' keyword is incompatible with C++98
# befriending enumeration type A is incompatible with C++98
# consecutive right angle brackets are incompatible with C++98 (use '> >')
# constructor call from initializer list is incompatible with C++98
# default template arguments for a function template are incompatible with C++98
# defaulted function definitions are incompatible with C++98
# delegating constructors are incompatible with C++98
# deleted function definitions are incompatible with C++98
# enumeration type in nested name specifier is incompatible with C++98
# enumeration types with a fixed underlying type are incompatible with C++98
# explicit conversion functions are incompatible with C++98
# friend declaration naming a member of the declaring class is incompatible with C++98
# friend function A would be implicitly redefined in C++98
# generalized initializer lists are incompatible with C++98
# goto would jump into protected scope in C++98
# in-class initialization of non-static data members is incompatible with C++98
# indirect goto might cross protected scopes in C++98
# initialization of initializer_list object is incompatible with C++98
# inline namespaces are incompatible with C++98
# lambda expressions are incompatible with C++98
# literal operators are incompatible with C++98
# noexcept expressions are incompatible with C++98
# noexcept specifications are incompatible with C++98
# non-class friend type A is incompatible with C++98
# non-type template argument referring to <function|object> B with internal linkage is incompatible with C++98
# passing object of trivial but non-POD type A through variadic <function|block|method|constructor> is incompatible with C++98
# range-based for loop is incompatible with C++98
# raw string literals are incompatible with C++98
# redundant parentheses surrounding address non-type template argument are incompatible with C++98
# reference initialized from initializer list is incompatible with C++98
# reference qualifiers on functions are incompatible with C++98
# rvalue references are incompatible with C++98
# scalar initialized from empty initializer list is incompatible with C++98
# scoped enumerations are incompatible with C++98
# specifying character 'A' with a universal character name is incompatible with C++98
# static data member A in union is incompatible with C++98
# static_assert declarations are incompatible with C++98
# substitution failure due to access control is incompatible with C++98
# switch case would be in a protected scope in C++98
# trailing return types are incompatible with C++98
# unicode literals are incompatible with C++98
# universal character name referring to a control character is incompatible with C++98
# use of 'template' keyword outside of a template is incompatible with C++98
# use of 'typename' outside of a template is incompatible with C++98
# use of non-static data member A in an unevaluated context is incompatible with C++98
# use of null pointer as non-type template argument is incompatible with C++98
# variadic templates are incompatible with C++98
# -Wc++98-compat-bind-to-temporary-copy
# <copying variable|copying parameter|returning object|throwing object|copying member subobject|copying array element|allocating object|copying temporary|initializing base subobject|initializing vector element> of type C when binding a reference to a temporary would <invoke an inaccessible constructor|find no viable constructor|find ambiguous constructors|invoke a deleted constructor> in C++98
# -Wc++98-compat-local-type-template-args
# local type A as template argument is incompatible with C++98
# -Wc++98-compat-unnamed-type-template-args
# unnamed type as template argument is incompatible with C++98
-Wc99-extensions
# Flexible array members are a C99-specific feature
# ISO C99 requires whitespace after the macro name
# [qualifier in |static ]array size ['[*] ']is a C99 feature
# commas at the end of enumerator lists are a C99-specific feature
# compound literals are a C99-specific feature
# designated initializers are a C99 feature
# empty macro arguments are a C99 feature
# hexadecimal floating constants are a C99 feature
# variable declaration in for loop is a C99-specific feature
-Wcast-align
# cast from A to B increases required alignment from C to D
-Wcast-qual # IGNORED switch
-Wchar-align # IGNORED switch
-Wcomments
# -Wcomment
# '/*' within block comment
# // comments are not allowed in this language
# escaped newline between */ characters at block comment end
# multi-line // comment
-Wconditional-uninitialized
# variable A may be uninitialized when <used here|captured by block>
-Wcovered-switch-default
# default label in switch which covers all enumeration values
-Wctor-dtor-privacy # IGNORED switch
-Wdeprecated-implementations
# Implementing deprecated <method|class|category>
-Wdirect-ivar-access
# instance variable A is being directly accessed
-Wdisabled-macro-expansion
# disabled expansion of recursive macro
-Wdisabled-optimization # IGNORED switch
-Wdiscard-qual # IGNORED switch
-Wdiv-by-zero # IGNORED switch
-Wdocumentation