Group Index

A-FF-LL-Z
ArraysFunctionsLinkage
Array BoundsGoto and LabelsMacro Definitions
Bit-FieldsISO C LanguageMacro Usage
BracingISO:C90 LanguageNull Statements
Characters & StringsISO:C99 LanguageOperator Precedence
CharactersISO C++ LanguageOperator Usage
Compound LiteralsIdentifiersPointer Conversions
Constant ExpressionsImplicit Casts - float to intPointer Usage
ConstantsImplicit Casts - int to floatPreprocessor
ControlImplicit Casts - NarrowingRedundant Constructs
C++ CompatibilityImplicit Casts - Plain Char CastsVariable Scope
Critical ProblemsIntegral promotionSide-Effects
DataflowImplicit Casts - Signed to UnsignedSigned Value Conversions
DeclarationsImplicit Casts - Unsigned to Larger SignedStructures and Unions
DegenerateImplicit Casts - Unsigned to SignedSuffixes
Designated InitializersIncludesSwitch Statements
EnumsIndentationType Qualifiers
Evaluation OrderInvariant Logical OperationsUnrepresentable Values
Floating Value ConversionsK&R RestrictionsUnset Variables
For loopsLanguage ExtensionUnsigned Value Conversions
Function ReturnsLibraryWidening Conversions

Arrays

Message Message Text
0623[U] '%s' has incomplete type and no linkage - this is undefined.
0676[u] Array element is of function type. Arrays cannot be constructed from function types.
0678[u] Array element is array of unknown size. Arrays cannot be constructed from incomplete types.
0680[u] Array element is 'void' or an incomplete 'struct' or 'union'. Arrays cannot be constructed from incomplete types.
0686Array has fewer initializers than its declared size. Default initialization is applied to the remainder of the array elements.
0687Array has been initialized using concatenated strings and has fewer initializers than its declared size.
0688Array size determined by number of initializers which include concatenated string literals.
0694Array initializer is missing the optional {.
1037[E] Arrays of length zero are a language extension.
1051[C99] A variable length array has been declared.
1052[C99] A variable length array of unspecified size has been declared.
1312The array being initialized is not large enough to hold a terminating null byte for the string initializer.
3111Redundant comma at end of braced initializer will be ignored.
3313No definition has been found for structure/union tag '%s'.
3337The array '%s[]' is defined with a single element because no size has been specified.
3650Typedef defines an array type of unknown size.
3651Using a typedef for an array of unknown size can lead to unexpected results.
3674Array size defined implicitly by the number of initializers.
3684Array declared with unknown size.
[Back to Top]

Array Bounds

Message Message Text
3405Index[Array] is equivalent to Array[Index] but more confusing.
3680[U] Access outside bounds of array using a constant array subscript.
3681Use of a constant negative value in array subscript operation or pointer arithmetic.
3685[U] Definite access outside bounds of array.
3686Definite use of a negative value in array subscript operation or pointer arithmetic.
3689[U] Apparent access outside bounds of array.
3690Apparent use of a negative value in array subscript operation or pointer arithmetic.
[Back to Top]

Bit-Fields

Message Message Text
0475[u] Operand of 'sizeof' is an expression designating a bit-field.
0476[C] 'sizeof' cannot be applied to a bit-field.
0634[I] Bit-fields in this struct/union have not been declared explicitly as unsigned or signed.
0635[E] Bit-fields in this struct/union have been declared with types other than int, signed int or unsigned int.
3131Hard coded 'magic' number, '%s', used to define the size of a bit-field.
3621A bit-field is being defined as a member of a struct or union.
3659Unnamed zero-width bit-field declared with a signed type.
3660Named bit-field consisting of a single bit declared with a signed type.
3661Plain int bit-field compared with zero.
3662Plain int bit-field compared with negative constant.
3663Unnamed bit-field defined with non-zero width.
3665Unnamed bit-field consisting of a single bit declared with a signed type.
[Back to Top]

Bracing

Message Message Text
2203This closing brace is not aligned appropriately with the matching opening brace.
2204'%s' is not aligned to match its controlling 'switch' statement.
2209This brace style is not consistent with 'exdented' style.
2212Body of control statement is not enclosed within braces.
2213Matching braces appear on the same line - proper indentation would be preferred.
2214Body of control statement is on the same line and is not enclosed within braces.
3402Braces are needed to clarify the structure of this 'if'-'if'-'else' statement.
[Back to Top]

Characters & Strings

Message Message Text
0431[C] Function argument points to a more heavily qualified type.
0752String literal passed as argument to function whose parameter is not a 'pointer to const'.
0753String literal assigned to pointer which is not a 'pointer to const'.
3625Type 'char' has been used in the declaration of an object or a function.
3631Type 'char' has been used in a cast.
3632Type 'char' has been used in the declaration of a typedef.
3633Type 'char' has been used in the operand of the sizeof operator.
[Back to Top]

Characters

Message Message Text
0235[U] Unknown escape sequence.
0284[I] Multiple character constants have implementation defined values.
0285[I] Character constant contains character which is not a member of the basic source character set.
0286[I] String literal contains character which is not a member of the basic source character set.
0287[I] Header name contains character which is not a member of the basic source character set.
0288[I] Source file '%s' has comments containing characters which are not members of the basic source character set.
0289[I] Source file '%s' has preprocessing tokens containing characters which are not members of the basic source character set.
0292[I] Source file '%s' has comments containing one of the characters '$', '@' or '`'.
0299[I] Source file '%s' includes #pragma directives containing characters which are not members of the basic source character set.
0874[U] Character string literal and wide character string literal are adjacent.
0878Using wide character or string literals.
3601Trigraphs (??x) are an ISO feature.
3610Hexadecimal escape sequence used.
3628Octal escape sequences used in a character constant or string literal.
[Back to Top]

Compound Literals

Message Message Text
1054[C99] A compound literal has been used.
[Back to Top]

Constant Expressions

Message Message Text
0271[U] Left shift operation on constant signed expression generating an undefined value.
0274[I] Implicit conversion of integer constant expression to a signed integer type which cannot represent the value.
0275[U] Floating value is out of range for conversion to destination type.
0277Implicit conversion of a constant negative value to an unsigned type.
0278[C] Overflow in signed arithmetic operation on constant operands.
0280Implicit conversion of constant negative value which assumes a two's complement representation of signed values.
0580[C] Constant is too large to be representable.
0581[I] Floating-point constant may be too small to be representable.
0586[U] Division by constant zero.
0974[I] Cast of integer constant expression to a signed integer type which cannot represent the value.
0977Cast of a constant negative value to an unsigned type.
0980Cast of constant negative value which assumes a two's complement representation of signed values.
3290Truncation of positive constant integer value during cast to a smaller unsigned type.
3301Truncation of bits in an unsigned left shift operation on a constant value.
3302Wraparound past zero in unsigned subtraction of constant operands.
3303Wraparound past zero in unsigned addition of constant operands.
3304Wraparound past zero in unsigned multiplication of constant operands.
3306Truncation of positive constant integer value during implicit conversion to a smaller unsigned type.
[Back to Top]

Constants

Message Message Text
0246[E] Binary integer constants are a language extension.
0336Macro defined as an octal constant.
0339Octal constant used.
0875[L] String literal exceeds 509 characters - program does not conform strictly to ISO:C90.
1254Suffix is not consistent with a type of unsigned long.
1255Unsuffixed integer constant is not of type int.
1272Redundant leading zeroes on a numeric constant.
1281Integer literal constant is of an unsigned type but does not include a "U" suffix.
3003This character constant is being interpreted as a NULL pointer constant.
3120Hard-coded 'magic' integer constant, '%s'.
3121Hard-coded 'magic' floating constant, '%s'.
3122Hard-coded 'magic' string literal, %s.
3123Hard coded 'magic' character constant, %s.
3131Hard coded 'magic' number, '%s', used to define the size of a bit-field.
3132Hard coded 'magic' number, '%s', used to define the size of an array.
3613Some pre-ISO compilers would treat this 8 or 9 as an octal digit.
3626Double-quote character in a character constant is not preceded by a backslash character.
3627Single-quote character in a string literal is not preceded by a backslash character.
3628Octal escape sequences used in a character constant or string literal.
[Back to Top]

Control

Message Message Text
0769A 'break' statement has been used to terminate an iteration statement.
0770A 'continue' statement has been used.
0771More than one 'break' statement has been used to terminate this iteration statement.
2000No 'else' clause exists for this 'if' statement.
2004No concluding 'else' exists in this 'if'-'else'-'if' statement.
2005A 'continue' statement has been used.
2465This 'for' loop will only be executed once.
2467Loop control variable, %s, is not modified inside loop.
2469Loop control variable in this 'for' statement, %s, is modified in the body of the loop.
3201This statement is unreachable.
3314This controlling expression is an assignment.
3323This controlling expression has a constant 'true' value.
3325This 'while' or 'for' loop controlling expression has a constant 'false' value.
3326The result of an assignment is being used in a logical operation.
3329This 'if' controlling expression has a constant 'false' value.
3344Controlling expression is not an 'essentially Boolean' expression.
3346The controlling expression in this 'if' statement has a constant 'true' value.
3357The value of this loop controlling expression is always 'true'.
3358The value of this 'if' controlling expression is always 'true'.
3359The value of this controlling expression is always 'false'.
3360The value of this 'do - while' controlling expression is always 'false'. The loop will only be executed once.
3361Using a 'do-while-zero' construct. The loop will only be executed once.
3416Logical operation performed on expression with possible side effects.
4115Operand of logical && or || operator is not an 'essentially Boolean' expression.
4116Operand of logical ! operator is not an 'essentially Boolean' expression.
[Back to Top]

C++ Compatibility

Message Message Text
0605[C] A declaration must declare a tag or an identifier.
0745[U] 'return;' found in '%s()', which has been defined with a non-'void' return type.
0780Another identifier '%s' is already in scope in a different namespace.
1300'%s' is a keyword in C++.
1301'%s' is a keyword in some C++ implementations.
1302'%s()' must be declared before use in C++.
1303An empty parameter list in a function type has a different meaning in C++.
1304Old style definition of function '%s()' is not portable to C++.
1305The global object '%s' declared 'const' has external linkage in C but internal linkage in C++.
1306Multiple tentative definitions of '%s'. This is not allowed in C++.
1307Unnamed 'struct' and 'union' types may cause portability problems when moving to C++.
1308The tag '%s' would clash with an existing typedef in C++.
1309The typedef '%s' would clash with an existing 'struct' / 'union' / 'enum' tag in C++.
1312The array being initialized is not large enough to hold a terminating null byte for the string initializer.
1314The tag '%s' is defined within another 'struct' / 'union'.
1315The 'static' qualifier has been used in the declaration of a tag.
1317Value of constant expression is not in the enum type to which it is being converted.
1318Object of enum type is being modified with a compound assignment operator.
1319Object of enum type is being modified with an increment or decrement operator.
1322In C, sizeof('c') == sizeof(int), but in C++, sizeof('c') == sizeof(char) == 1.
1323The sizeof operator has been applied to an enum constant.
1324Function 'main' cannot be called or have its address taken in C++.
1325'%s()' is defined with a non-void return type but contains 'return;'. This is not allowed in C++.
1327The macro __STDC__ has been used. It may not be present in a C++ environment.
1328Tag type defined within a function declaration.
1329The global object '%s' declared 'const' has been defined without an explicit initializer. This is not allowed in C++.
1412A constant expression of non-enum type is being assigned to an object of enum type.
1479Object of enum type is being modified with an arithmetic compound assignment operator.
1481Object of enum type is being modified with an increment or decrement operator.
3001Function has been declared with an empty parameter list.
3002Defining '%s()' with an identifier list and separate parameter declarations is an obsolescent feature.
3311[u] An earlier jump to this statement will bypass the initialization of local variables.
3335No function declaration. Implicit declaration inserted: 'extern int %s();'.
[Back to Top]

Critical Problems

Message Message Text
0179[U] Argument type does not match conversion specifier number %s.
0184[U] Insufficient arguments to satisfy conversion specifier, number %s.
0185[U] Call contains more arguments than conversion specifiers.
0206[U] Argument type does not match conversion specifier number %s.
0207[U] 'scanf' expects address of objects being stored into.
0272[I] Apparent conversion of integer expression to a signed integer type which cannot represent the value.
0273[I] Definite conversion of integer expression to a signed integer type which cannot represent the value.
0290Definite conversion of a negative value to an unsigned type.
0291Apparent conversion of a negative value to an unsigned type.
0294[U] Definite signed left shift operation generating an undefined value.
0295[U] Apparent signed left shift operation generating an undefined value.
0296[U] Definite overflow in signed arithmetic operation.
0297[U] Apparent overflow in signed arithmetic operation.
0311Dangerous pointer cast results in loss of const qualification.
0312Dangerous pointer cast results in loss of volatile qualification.
0400[U] '%s' is modified more than once between sequence points - evaluation order unspecified.
0402[U] '%s' is modified and accessed between sequence points - evaluation order unspecified.
0500[U] Right operand of shift operator is negative - this is undefined.
0501[U] Right operand of shift operator is too large - this is undefined.
0504[U] Definite dereference of NULL pointer.
0505[U] Apparent dereference of NULL pointer.
0508[u] Definite arithmetic operation on NULL pointer.
0509[u] Apparent arithmetic operation on NULL pointer.
0585[U] Apparent division by zero.
0587[U] Definite division by zero.
0594Negative 'case' label expression is incompatible with unsigned controlling expression in 'switch' statement.
0596Value of 'case' label expression is too large for type of controlling expression in 'switch' statement.
0625[U] '%s' has been declared with both internal and external linkage - the behaviour is undefined.
0686Array has fewer initializers than its declared size. Default initialization is applied to the remainder of the array elements.
0687Array has been initialized using concatenated strings and has fewer initializers than its declared size.
0695Type given in sizeof is not compatible with the pointed to type used to cast malloc.
0696The size of the allocated memory block is smaller than the size of the object type addressed by the pointer cast.
0697The size of the allocated memory block is not an integral multiple of the size of the object type addressed by the pointer cast.
0703Structure has fewer initializers than its declared size. Default initialization is applied to the remainder of the members.
0735Using relational or logical operators in a 'switch' expression is usually a programming error.
0744[U] '%s()' has been declared with a non void return type but ends with an implicit 'return ;' statement.
0745[U] 'return;' found in '%s()', which has been defined with a non-'void' return type.
0813[U] Using any of the characters ' " or /* in '#include <%s>' gives undefined behaviour.
0814[U] Using the characters ' or /* in '#include "%s"' gives undefined behaviour.
0874[U] Character string literal and wide character string literal are adjacent.
1312The array being initialized is not large enough to hold a terminating null byte for the string initializer.
1331Type or number of arguments doesn't match previous use of the function.
1332Type or number of arguments doesn't match prototype found later.
1333Type or number of arguments doesn't match function definition found later.
1509'name' has external linkage and has multiple definitions.
1510'name' has external linkage and has incompatible declarations.
2008Code statements precede the first label in this 'switch' construct.
3003This character constant is being interpreted as a NULL pointer constant.
3101Unary '-' applied to an operand of type unsigned int or unsigned long gives an unsigned result.
3110The left-hand operand of this ',' has no side effects.
3112This statement has no side-effect - it can be removed.
3113[U] 'return' statement includes no expression but function '%s()' is implicitly of type 'int'.
3114[U] Function '%s()' is implicitly of type 'int' but ends without returning a value.
3201This statement is unreachable.
3217Address of automatic object exported to a pointer with linkage or wider scope.
3225Address of automatic object exported using a function parameter.
3230Address of automatic object assigned to local pointer with static storage duration.
3296Definite truncation of positive integer value during implicit conversion to a smaller unsigned type.
3297Apparent truncation of positive integer value during implicit conversion to a smaller unsigned type.
3307The operand of 'sizeof' is an expression with implied side effects, but they will not be evaluated.
3311[u] An earlier jump to this statement will bypass the initialization of local variables.
3321[U] The variable '%s' is definitely unset at this point.
3328An unsigned value is being compared with a negative constant - this is dangerous.
3332The macro '%s' used in this '#if' or '#elif' expression is not defined.
3334This declaration of '%s' hides a more global declaration.
3335No function declaration. Implicit declaration inserted: 'extern int %s();'.
3341Comparing floating point expressions for equality (with '==' or '!=').
3343Logical NOT being performed on one operand of a comparison.
3347[U] The variable '%s' is apparently unset at this point.
3348Definite use of unset pointer as an argument to a function which expects a read-only pointer.
3349Apparent use of unset pointer as an argument to a function which expects a read-only pointer.
3355The result of this logical operation is always 'true'.
3356The result of this logical operation is always 'false'.
3357The value of this loop controlling expression is always 'true'.
3358The value of this 'if' controlling expression is always 'true'.
3359The value of this controlling expression is always 'false'.
3360The value of this 'do - while' controlling expression is always 'false'. The loop will only be executed once.
3372Definite wraparound past zero in an unsigned arithmetic operation.
3382Apparent wraparound past zero in an unsigned arithmetic operation.
3404Statement contains a redundant * operator at top level. *p++ means *(p++) not (*p)++.
3407String literal compared using a relational or equality operator.
3422Statement contains a redundant operator at top level.
3423Statement contains a redundant cast at top level.
3424Statement contains a redundant & or | at top level.
3436Macro definition hides previously declared identifier.
3651Using a typedef for an array of unknown size can lead to unexpected results.
3680[U] Access outside bounds of array using a constant array subscript.
3685[U] Definite access outside bounds of array.
3689[U] Apparent access outside bounds of array.
4101Both operands of & operator are 'Boolean' expressions.
4102Both operands of | operator are 'Boolean' expressions.
4103Both operands of arithmetic or bitwise operator are 'Boolean' expressions.
4104Left hand operand of arithmetic or bitwise operator is a 'Boolean' expression.
4105Right hand operand of arithmetic or bitwise operator is a 'Boolean' expression.
4111Right hand operand of relational operator is a 'Boolean' expression.
4112Left hand operand of relational operator is a 'Boolean' expression.
4113Both operands of relational operator are 'Boolean' expressions.
4114Operand of ~ operator is a 'Boolean' expression.
4140Address of automatic object exported in function return value.
[Back to Top]

Dataflow

Message Message Text
0291Apparent conversion of a negative value to an unsigned type.
0297[U] Apparent overflow in signed arithmetic operation.
0505[U] Apparent dereference of NULL pointer.
0585[U] Apparent division by zero.
3195The function parameter '%s' is always modified before use.
3196The variable '%s' is never set.
3197This initialization is redundant. The value of '%s' is never used before being modified.
3198This assignment is redundant. The value of '%s' is never used before being modified.
3199This assignment is redundant. The value of '%s' is never subsequently used.
3321[U] The variable '%s' is definitely unset at this point.
3355The result of this logical operation is always 'true'.
3356The result of this logical operation is always 'false'.
3371Definite truncation of bits in an unsigned left shift operation.
3372Definite wraparound past zero in an unsigned arithmetic operation.
3381Apparent truncation of bits in an unsigned left shift operation.
3382Apparent wraparound past zero in an unsigned arithmetic operation.
3685[U] Definite access outside bounds of array.
3689[U] Apparent access outside bounds of array.
[Back to Top]

Declarations

Message Message Text
0606Object '%s' is declared using typedefs which are different to those in a previous declaration.
0623[U] '%s' has incomplete type and no linkage - this is undefined.
0624Function '%s' is declared using typedefs which are different to those in a previous declaration.
0626[U] '%s' has different type to previous declaration (which is no longer in scope).
0629[C] More than one definition of '%s' (with internal linkage).
0630[U] More than one definition of '%s' (with external linkage).
0632[U] Tentative definition of '%s' with internal linkage cannot have unknown size.
0661[U] '%s()' may not have a storage class specifier of 'static' when declared at block scope.
0667[U] '%s' is declared as a typedef and may not be redeclared as an object at an inner scope without an explicit type specifier.
0668[U] '%s' is declared as a typedef and may not be redeclared as a member of a 'struct' or 'union' without an explicit type specifier.
0781'%s' is being used as a structure/union member as well as being a label, tag or ordinary identifier.
1306Multiple tentative definitions of '%s'. This is not allowed in C++.
2007'auto' does not add information to a declaration, and is best avoided.
2011The 'register' storage class specifier has been used.
2050The 'int' type specifier has been omitted from a function declaration.
2051The 'int' type specifier has been omitted from an object declaration.
3204The variable '%s' is only set once and so it could be declared with the 'const' qualifier.
3211The global identifier '%s' is defined here but is not used in this translation unit.
3218File scope static, '%s', is only accessed in one function.
3220Identifier declared at a nested level of block scope.
3221Function with external linkage declared at block scope.
3222Object with external linkage declared at block scope.
3223Object with static storage duration declared at block scope.
3228Storage class specifier not positioned at the beginning of declaration.
3229File scope static, '%s', is written but never used.
3232File scope static, '%s', is never modified. It could be declared const.
3233File scope static, '%s', is not explicitly initialized but its value is used.
3260Typedef defined with more than 2 levels of indirection.
3261Member of struct/union defined with more than 2 levels of indirection.
3262Object defined or declared with more than 2 levels of indirection.
3263Function defined or declared with a return type which has more than 2 levels of indirection.
3334This declaration of '%s' hides a more global declaration.
3337The array '%s[]' is defined with a single element because no size has been specified.
3408'%s' has external linkage and is being defined without any previous declaration.
3447'%s' is being declared with external linkage but this declaration is not in a header file.
3448Declaration of typedef '%s' is not in a header file although it is used in a definition or declaration with external linkage.
3450Function '%s', with internal linkage, is being defined without a previous declaration.
3620'register' may be illegal on array and 'struct' / 'union' types in some compilers.
[Back to Top]

Degenerate

Message Message Text
3201This statement is unreachable.
3316An unsigned value can never be less than zero - this test is always false.
3324An unsigned value is always greater than or equal to zero - this test is always true.
3328An unsigned value is being compared with a negative constant - this is dangerous.
3355The result of this logical operation is always 'true'.
3356The result of this logical operation is always 'false'.
3358The value of this 'if' controlling expression is always 'true'.
3359The value of this controlling expression is always 'false'.
[Back to Top]

Designated Initializers

Message Message Text
1053[C99] Designators have been used in this initialization list.
[Back to Top]

Enums

Message Message Text
0546[C] 'enum %s' has unknown content. Use of an enum tag with undefined content is not permitted.
0646[C] Enumeration constants must have values representable as 'int's.
0647[L] Number of enumeration constants exceeds 127 - program does not conform strictly to ISO:C90.
0722Enum constant not explicitly initialized, but a previous constant has been.
0723Initialize none, first only, or all entries in this enumerator list.
1271Using a non-int expression to define an enum constant.
1317Value of constant expression is not in the enum type to which it is being converted.
1318Object of enum type is being modified with a compound assignment operator.
1319Object of enum type is being modified with an increment or decrement operator.
1323The sizeof operator has been applied to an enum constant.
1400Enum object is being compared with an enum constant of a different enum type using an equality operator.
1401An enum constant is being passed as argument to a function parameter of a different enum type.
1402An enum constant is being assigned to an object of a different enum type.
1403An enum constant is being returned from a function with a different enum return type.
1404Enum object is being compared with an enum constant of a different enum type using a relational operator.
1410Enum object is being compared with a constant, non-enum expression using an equality operator.
1411A constant expression of non-enum type is being passed as argument to a function parameter of enum type.
1412A constant expression of non-enum type is being assigned to an object of enum type.
1413A constant expression of non-enum type is being returned from a function with an enum return type.
1414Enum object is being compared with a constant, non-enum expression using a relational operator.
1420Enum object is being compared with an object of a different enum type using an equality operator.
1421An enum object is being passed as argument to a function parameter of a different enum type.
1422An enum object is being assigned to an object of a different enum type.
1423An enum object is being returned from a function with a different enum return type.
1424Enum object is being compared with an object of a different enum type using a relational operator.
1431An enum object is being passed as argument to a function parameter of non-enum type.
1432An enum object is being assigned to an object of non-enum type.
1433An enum object is being returned from a function with a non-enum return type.
1434This enum constant is not representable in a 16 bit integer type.
1440Enum object is being compared with a non-constant, non-enum expression using an equality operator.
1441A non-constant expression of non-enum type is being passed as argument to a function parameter of enum type.
1442A non-constant expression of non-enum type is being assigned to an object of enum type.
1443A non-constant expression of non-enum type is being returned from a function with an enum return type.
1444Enum object is being compared with a non-constant, non-enum expression using a relational operator.
1460'Switch' label value, %s, not contained in enum type.
1461Value of constant expression is not in the enum type to which it is being converted, but is bitwise OR of constants in the enum type.
1470Numeric constant used as 'case' label with 'switch' expression of enum type.
1472Enum constant used as 'case' label with 'switch' expression of different enum type.
1473The 2nd and 3rd operands of this conditional operator (? :) are of different enum types.
1474Object of enum type is being modified with a bitwise compound assignment operator.
1479Object of enum type is being modified with an arithmetic compound assignment operator.
1480Objects or constants of different enum types are operands of a bitwise operator.
1481Object of enum type is being modified with an increment or decrement operator.
1482Non-constant expression cast to enum type.
1483Enum object or constant passed as argument to function declared in K&R style.
1484Constant expression cast to enum type.
[Back to Top]

Evaluation Order

Message Message Text
0400[U] '%s' is modified more than once between sequence points - evaluation order unspecified.
0401[U] '%s' may be modified more than once between sequence points - evaluation order unspecified.
0402[U] '%s' is modified and accessed between sequence points - evaluation order unspecified.
0403[U] '%s' may be modified and accessed between sequence points - evaluation order unspecified.
[Back to Top]

Floating Value Conversions

Message Message Text
0275[U] Floating value is out of range for conversion to destination type.
[Back to Top]

For loops

Message Message Text
0320[C99] Declaration within 'for' statement.
0321[C] Declaration within 'for' statement defines an identifier '%s' which is not an object.
0322[C] Illegal storage class specifier used in 'for' statement declaration.
2461Loop control variable, %s, has file scope.
2462The variable initialized in the first expression of this 'for' statement is not the variable identified as the 'loop control variable' (%s).
2463The variable incremented in the third expression of this 'for' statement is not the variable identified as the 'loop control variable' (%s).
2464Loop control variable, %s, modified twice in for-loop header.
2465This 'for' loop will only be executed once.
2466The value of this controlling expression is always 'false'. The contained code is unreachable.
2467Loop control variable, %s, is not modified inside loop.
2468Loop control variable, %s, is not modified inside loop but has file scope.
2469Loop control variable in this 'for' statement, %s, is modified in the body of the loop.
2470Taking address of loop control variable, %s.
2471Unable to identify a loop control variable.
2472More than one possible loop control variable.
3340Floating point variable used as 'for' loop control variable.
3342Controlling expression of 'for' loop is a floating point comparison.
3419Initialization expression of 'for' statement has no side effects.
3420Increment expression of 'for' statement has no side effects.
[Back to Top]

Function Returns

Message Message Text
0428Function identifier is not followed by () but a function call may be intended.
0744[U] '%s()' has been declared with a non void return type but ends with an implicit 'return ;' statement.
0745[U] 'return;' found in '%s()', which has been defined with a non-'void' return type.
0746[C] 'return exp;' found in '%s()' whose return type is 'void'.
1328Tag type defined within a function declaration.
2006'%s()' has more than one 'return' path.
2010The function '%s()' must not be called.
3112This statement has no side-effect - it can be removed.
3113[U] 'return' statement includes no expression but function '%s()' is implicitly of type 'int'.
3114[U] Function '%s()' is implicitly of type 'int' but ends without returning a value.
3200'%s' returns a value which is not being used.
3208'%s()' returns a value which is sometimes ignored.
3209'%s()' returns a value which is always ignored.
3225Address of automatic object exported using a function parameter.
3624Function returns a struct/union by value.
3670Recursive call to function containing this call.
4140Address of automatic object exported in function return value.
[Back to Top]

Functions

Message Message Text
0422[C] Function call contains fewer arguments than prototype specifies.
0423[C] Function call contains more arguments than prototype specifies.
0430[C] Function argument is not of compatible 'struct'/'union' type.
0541[C] Argument no. %s does not have object type.
1302'%s()' must be declared before use in C++.
1303An empty parameter list in a function type has a different meaning in C++.
1304Old style definition of function '%s()' is not portable to C++.
1330The parameter identifiers in this function declaration differ from those in a previous declaration.
1331Type or number of arguments doesn't match previous use of the function.
1332Type or number of arguments doesn't match prototype found later.
1333Type or number of arguments doesn't match function definition found later.
1334The parameter identifiers in the prototypes of these functions/function pointers are different.
1335Parameter identifiers missing in function prototype declaration.
1336Parameter identifiers missing in declaration of a function type.
1337Function defined with a variable number of parameters.
3001Function has been declared with an empty parameter list.
3002Defining '%s()' with an identifier list and separate parameter declarations is an obsolescent feature.
3007"void" has been omitted when defining a function with no parameters.
3313No definition has been found for structure/union tag '%s'.
3319[U] Function called with number of arguments which differs from number of parameters in definition.
3320Type of argument no. %s differs from its type in definition of function.
3330'%s()' has been called with a variable number of arguments.
3335No function declaration. Implicit declaration inserted: 'extern int %s();'.
3623Passing a struct/union by value as a function argument.
3635Function identifier used as a pointer without a preceding & operator.
3671Function called via pointer to function.
3672Using non-const pointer to function.
3675Function parameter declared with type qualification which differs from previous declaration.
[Back to Top]

Goto and Labels

Message Message Text
0689[u] 'Switch' statement will bypass the initialization of this local variable.
0706[U] Label '%s' is not unique within this function.
2001A 'goto' statement has been used.
2015A statement 'label' has been used.
3201This statement is unreachable.
3202The label '%s:' is not used in this function and could be removed.
3311[u] An earlier jump to this statement will bypass the initialization of local variables.
3312[u] This goto statement will jump into a previous block and bypass the initialization of local variables.
[Back to Top]

ISO C Language

ItemMessage Message Text
5.2.4.2.1 2940Constant: Result of implicit conversion is only representable in a two's complement implementation.
2941Definite: Result of implicit conversion is only representable in a two's complement implementation.
2942Apparent: Result of implicit conversion is only representable in a two's complement implementation.
2943Suspicious: Result of implicit conversion is only representable in a two's complement implementation.
2945Constant: Result of cast is only representable in a two's complement implementation.
2946Definite: Result of cast is only representable in a two's complement implementation.
2947Apparent: Result of cast is only representable in a two's complement implementation.
2948Suspicious: Result of cast is only representable in a two's complement implementation.
6.7 1509'name' has external linkage and has multiple definitions.
1510'name' has external linkage and has incompatible declarations.
7.11.2.1 2776Definite: Copy between overlapping objects.
2777Apparent: Copy between overlapping objects.
2778Suspicious: Copy between overlapping objects.
[Back to Top]

ISO:C90 Language

ItemMessage Message Text
3.5.7 3111Redundant comma at end of braced initializer will be ignored.
5,1,2,3 3415Right hand operand of '&&' or '||' is an expression with possible side effects.
3416Logical operation performed on expression with possible side effects.
5.1.1.2 0261[C] Comment still open at end of included file.
0268[S] Comment open at end of translation unit.
0343Using string literal concatenation.
0688Array size determined by number of initializers which include concatenated string literals.
0914[U] Source file does not end with a newline character.
0915[U] Source file ends with a backslash character followed by a newline.
1029[E] Whitespace encountered between backslash and new-line has been ignored.
5.1.2.2 0601[E] Function 'main()' is not of type 'int (void)' or 'int (int, char *[])'.
5.1.2.3 3345Statement contains more than one access to objects that are volatile.
3441Function call argument is an expression with possible side effects.
3442Operator other than & (address-of) or = (assignment) applied to a volatile object.
5.2.1 0285[I] Character constant contains character which is not a member of the basic source character set.
0286[I] String literal contains character which is not a member of the basic source character set.
0287[I] Header name contains character which is not a member of the basic source character set.
0288[I] Source file '%s' has comments containing characters which are not members of the basic source character set.
0289[I] Source file '%s' has preprocessing tokens containing characters which are not members of the basic source character set.
0292[I] Source file '%s' has comments containing one of the characters '$', '@' or '`'.
0299[I] Source file '%s' includes #pragma directives containing characters which are not members of the basic source character set.
5.2.1.1 0251[S] Character constant contains a trigraph representation of a single backslash character.
0257[S] String literal is not terminated. A trigraph has been used in the construction of an escape sequence.
3601Trigraphs (??x) are an ISO feature.
5.2.2 3609Using the alert escape sequence '\\a'.
5.2.4.1 0009[Q] The length of this preprocessed source code line has exceeded the size of an internal buffer.
0410[L] Nesting of parentheses exceeds 32 - program does not conform strictly to ISO:C90.
0609[L] More than 12 pointer, array or function declarators modifying a declaration - program does not conform strictly to ISO:C90.
0611[L] Nesting of 'struct' or 'union' types exceeds 15 - program does not conform strictly to ISO:C90.
0612[L] Size of object '%s' exceeds 32767 bytes - program does not conform strictly to ISO:C90.
0614[L] More than 127 block scope identifiers defined within a block - program does not conform strictly to ISO:C90.
0639[L] Number of members in 'struct' or 'union' exceeds 127 - program does not conform strictly to ISO:C90.
0647[L] Number of enumeration constants exceeds 127 - program does not conform strictly to ISO:C90.
0715[L] Nesting of control structures (statements) exceeds 15 - program does not conform strictly to ISO:C90.
0739[L] Number of 'case' labels exceeds 257 - program does not conform strictly to ISO:C90.
0810[L] '#include "%s"' causes nesting to exceed 8 levels - program does not conform strictly to ISO:C90.
0828[L] More than 8 levels of nested conditional inclusion - program does not conform strictly to ISO:C90.
0857[L] Number of macro definitions exceeds 1024 - program does not conform strictly to ISO:C90.
0858[L] Number of macro parameters exceeds 31 - program does not conform strictly to ISO:C90.
0859[L] Number of arguments in macro call exceeds 31 - program does not conform strictly to ISO:C90.
0875[L] String literal exceeds 509 characters - program does not conform strictly to ISO:C90.
5.2.4.2.1 0280Implicit conversion of constant negative value which assumes a two's complement representation of signed values.
0281Definite use of a negative value which assumes a two's complement representation of signed values.
0282Apparent use of a negative value which assumes a two's complement implementation of signed values.
0980Cast of constant negative value which assumes a two's complement representation of signed values.
5.2.4.2.2 0581[I] Floating-point constant may be too small to be representable.
6.1 0873[C] Preprocessing token cannot be converted to an actual token.
6.1.1 1028[E] Use of the sizeof operator in a preprocessing directive is a language extension.
6.1.2 0776[L] External identifier matches other external identifier(s) (e.g. '%s') in first 6 characters - program does not conform strictly to ISO:C90.
0777[U] External identifier does not differ from other identifier(s) (e.g. '%s') within the specified number of significant characters.
0778[L] Identifier matches other identifier(s) (e.g. '%s') in first 31 characters - program does not conform strictly to ISO:C90.
0779[U] Identifier does not differ from other identifier(s) (e.g. '%s') within the specified number of significant characters.
1002[E] '%s' is not a legal identifier in ISO C.
6.1.2.1 0706[U] Label '%s' is not unique within this function.
6.1.2.2 0625[U] '%s' has been declared with both internal and external linkage - the behaviour is undefined.
3207File scope static, '%s', is not used, and could be removed.
6.1.2.3 0780Another identifier '%s' is already in scope in a different namespace.
0781'%s' is being used as a structure/union member as well as being a label, tag or ordinary identifier.
0782This identifier, '%s', will still be in scope when the same identifier is declared later in a different namespace.
0783A subsequent declaration of '%s' means that it is being used both as a structure/union member and also as a label, tag or ordinary identifier.
1100The label '%s' is also declared as a typedef.
6.1.2.4 0689[u] 'Switch' statement will bypass the initialization of this local variable.
1313Executing 'goto %s' will cause local initialization to be skipped.
3217Address of automatic object exported to a pointer with linkage or wider scope.
3225Address of automatic object exported using a function parameter.
3230Address of automatic object assigned to local pointer with static storage duration.
3311[u] An earlier jump to this statement will bypass the initialization of local variables.
3312[u] This goto statement will jump into a previous block and bypass the initialization of local variables.
4140Address of automatic object exported in function return value.
6.1.2.5 0345Using the keyword 'void'.
0676[u] Array element is of function type. Arrays cannot be constructed from function types.
0678[u] Array element is array of unknown size. Arrays cannot be constructed from incomplete types.
0680[u] Array element is 'void' or an incomplete 'struct' or 'union'. Arrays cannot be constructed from incomplete types.
3302Wraparound past zero in unsigned subtraction of constant operands.
3303Wraparound past zero in unsigned addition of constant operands.
3304Wraparound past zero in unsigned multiplication of constant operands.
3611Non-portable comparison of plain 'char' with negative constant.
3612Nonportable comparison of plain 'char' with zero.
3625Type 'char' has been used in the declaration of an object or a function.
3631Type 'char' has been used in a cast.
3632Type 'char' has been used in the declaration of a typedef.
3633Type 'char' has been used in the operand of the sizeof operator.
6.1.2.6 0606Object '%s' is declared using typedefs which are different to those in a previous declaration.
0624Function '%s' is declared using typedefs which are different to those in a previous declaration.
0626[U] '%s' has different type to previous declaration (which is no longer in scope).
6.1.3 0244[C] Value of character constant is not representable in type 'int'.
6.1.3.1 1280A lowercase letter L (l) has been used in an integer or floating suffix.
6.1.3.2 0246[E] Binary integer constants are a language extension.
1280A lowercase letter L (l) has been used in an integer or floating suffix.
1281Integer literal constant is of an unsigned type but does not include a "U" suffix.
3606This unsuffixed decimal constant has type 'long', but had type 'unsigned int' in K&R C.
6.1.3.4 0231[S] Character constant contains an invalid hex escape sequence.
0232[C] Value of hex escape sequence is not representable in type 'unsigned char'.
0233[C] Value of octal escape sequence is not representable in type 'unsigned char'.
0234[S] String literal contains an invalid hex escape sequence.
0235[U] Unknown escape sequence.
0245[S] Empty character constant.
0249[S] Character constant contains a new-line character.
0250[S] Character constant contains a single backslash character.
0251[S] Character constant contains a trigraph representation of a single backslash character.
0257[S] String literal is not terminated. A trigraph has been used in the construction of an escape sequence.
0284[I] Multiple character constants have implementation defined values.
0338[C] Octal or hex escape sequence value is too large for 'unsigned char' or 'wchar_t' type.
1322In C, sizeof('c') == sizeof(int), but in C++, sizeof('c') == sizeof(char) == 1.
6.1.4 0234[S] String literal contains an invalid hex escape sequence.
0258[S] String literal is not terminated. A backslash character has been used to define an escape sequence.
0259[S] String literal is not terminated.
0752String literal passed as argument to function whose parameter is not a 'pointer to const'.
0753String literal assigned to pointer which is not a 'pointer to const'.
0874[U] Character string literal and wide character string literal are adjacent.
6.1.5 0811[C] The glue operator '##' may only appear in a '#define' preprocessing directive.
6.1.7 0812[C] Header name token '<text>' found outside '#include' preprocessing directive.
0813[U] Using any of the characters ' " or /* in '#include <%s>' gives undefined behaviour.
0814[U] Using the characters ' or /* in '#include "%s"' gives undefined behaviour.
0817[S] Closing quote or bracket '>' missing from include filename.
0831[E] Use of '\\' in this '#include' line is a PC extension - this usage is non-portable.
6.1.9 3108Nested comments are not recognized in the ISO standard.
6.2,2,1 3635Function identifier used as a pointer without a preceding & operator.
6.2.1.1 2100Integral promotion : unsigned char promoted to signed int.
2101Integral promotion : unsigned short promoted to signed int.
2102Integral promotion : unsigned char promoted to unsigned int.
2103Integral promotion : unsigned short promoted to unsigned int.
2104Integral promotion : signed char promoted to signed int.
2105Integral promotion : signed short promoted to signed int.
2106Integral promotion : plain char promoted to signed int.
2107Integral promotion : plain char promoted to unsigned int.
2109Integral promotion : _Bool promoted to signed int.
2120Integral promotion : unsigned bit-field promoted to signed int.
2122Integral promotion : unsigned bit-field promoted to unsigned int.
2124Integral promotion : signed bit-field promoted to signed int.
6.2.1.2 0272[I] Apparent conversion of integer expression to a signed integer type which cannot represent the value.
0273[I] Definite conversion of integer expression to a signed integer type which cannot represent the value.
0274[I] Implicit conversion of integer constant expression to a signed integer type which cannot represent the value.
0277Implicit conversion of a constant negative value to an unsigned type.
0290Definite conversion of a negative value to an unsigned type.
0291Apparent conversion of a negative value to an unsigned type.
0974[I] Cast of integer constant expression to a signed integer type which cannot represent the value.
0977Cast of a constant negative value to an unsigned type.
3290Truncation of positive constant integer value during cast to a smaller unsigned type.
3296Definite truncation of positive integer value during implicit conversion to a smaller unsigned type.
3297Apparent truncation of positive integer value during implicit conversion to a smaller unsigned type.
3306Truncation of positive constant integer value during implicit conversion to a smaller unsigned type.
6.2.1.3 0275[U] Floating value is out of range for conversion to destination type.
4119Result of floating point operation cast to an integral type.
6.2.2.1 0428Function identifier is not followed by () but a function call may be intended.
0450[C] An expression of array type cannot be cast.
0491Array subscripting applied to an object of pointer type.
0492Array subscripting applied to a function parameter declared as a pointer.
0544[U] The value of an incomplete 'union' may not be used.
0545[U] The value of an incomplete 'struct' may not be used.
6.2.2.2 0543[U] 'void' expressions have no value and may not be used in expressions.
6.2.2.3 0507[u] Arithmetic operation on constant NULL pointer.
0508[u] Definite arithmetic operation on NULL pointer.
0509[u] Apparent arithmetic operation on NULL pointer.
6.3 0296[U] Definite overflow in signed arithmetic operation.
0297[U] Apparent overflow in signed arithmetic operation.
0400[U] '%s' is modified more than once between sequence points - evaluation order unspecified.
0401[U] '%s' may be modified more than once between sequence points - evaluation order unspecified.
0402[U] '%s' is modified and accessed between sequence points - evaluation order unspecified.
0403[U] '%s' may be modified and accessed between sequence points - evaluation order unspecified.
4130Bitwise operations on signed data will give implementation defined results.
6.3.1 0434[S] The identifier '%s' has not been declared.
3430Macro argument expression may require parentheses.
6.3.10 0495[C] Left operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
0496[C] Right operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
4101Both operands of & operator are 'Boolean' expressions.
6.3.11 0495[C] Left operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
0496[C] Right operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
6.3.12 0495[C] Left operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
0496[C] Right operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
4102Both operands of | operator are 'Boolean' expressions.
6.3.13 4106Both operands of && operator are arithmetic or bitwise expressions.
4115Operand of logical && or || operator is not an 'essentially Boolean' expression.
6.3.13.14 0537[C] Second operand of '&&' or '||' must have scalar (arithmetic or pointer) type.
6.3.13.15 0536[C] First operand of '&&', '||' or '?' must have scalar (arithmetic or pointer) type.
6.3.14 4107Both operands of || operator are arithmetic or bitwise expressions.
4115Operand of logical && or || operator is not an 'essentially Boolean' expression.
6.3.15 0540[C] 2nd and 3rd operands of conditional operator '?' must have compatible types.
6.3.16 0555[C] Invalid assignment to object of void type or array type.
0556[C] Left operand of assignment must be a modifiable object.
0557[C] Right operand of assignment is not of arithmetic type.
0564[C] Left operand of assignment must be an lvalue (it must designate an object).
6.3.16.1 0561[C] Right operand of assignment is not of compatible 'struct'/'union' type.
0562[C] Right operand of assignment points to a more heavily qualified type.
0563[C] Right operand of assignment is not of compatible pointer type.
0671[C] Initializer for object of arithmetic type is not of arithmetic type.
0673[C] Initializer points to a more heavily qualified type.
0674[C] Initializer for pointer is of incompatible type.
0675[C] Initializer is not of compatible 'struct'/'union' type.
0682[C] Initializer for object of a character type is a string literal.
0683[C] Initializer for object of a character type is a wide string literal.
0698[C] String literal used to initialize an object of incompatible type.
0699[C] String literal used to initialize a pointer of incompatible type.
0755[C] 'return' expression is not of arithmetic type.
0756[C] 'return' expression is not of compatible 'struct'/'union' type.
0757[C] 'return' expression points to a more heavily qualified type.
0758[C] 'return' expression is not of compatible pointer type.
6.3.16.2 0550[C] Left operand of '+=' or '-=' is a pointer to an object of unknown size.
0558[C] Right operand of '+=' or '-=' must have integral type when left operand is a pointer.
0559[C] Right operand of '<<=', '>>=', '&=', '|=', '^=' or '%=' must have integral type.
0560[C] Left operand of '<<=', '>>=', '&=', '|=', '^=' or '%=' must have integral type.
0565[C] Left operand of '+=' or '-=' must be of arithmetic or pointer to object type.
6.3.2.1 0451[C] Subscripting requires a pointer (or array lvalue).
0452[C] Cannot subscript a pointer to an object of unknown size.
0453[C] An array subscript must have integral type.
0491Array subscripting applied to an object of pointer type.
0492Array subscripting applied to a function parameter declared as a pointer.
6.3.2.2 0422[C] Function call contains fewer arguments than prototype specifies.
0423[C] Function call contains more arguments than prototype specifies.
0426[C] Called function has incomplete return type.
0427[C] Object identifier used as if it were a function or a function pointer identifier.
0429[C] Function argument is not of arithmetic type.
0430[C] Function argument is not of compatible 'struct'/'union' type.
0431[C] Function argument points to a more heavily qualified type.
0432[C] Function argument is not of compatible pointer type.
0541[C] Argument no. %s does not have object type.
1302'%s()' must be declared before use in C++.
2110Default argument promotion : unsigned char promoted to signed int.
2111Default argument promotion : unsigned short promoted to signed int.
2112Default argument promotion : unsigned char promoted to unsigned int.
2113Default argument promotion : unsigned short promoted to unsigned int.
2114Default argument promotion : signed char promoted to signed int.
2115Default argument promotion : signed short promoted to signed int.
2116Default argument promotion : plain char promoted to signed int.
2117Default argument promotion : plain char promoted to unsigned int.
2118Default argument promotion : float promoted to double.
2119Default argument promotion : _Bool promoted to signed int.
2130Default argument promotion : unsigned bit-field promoted to signed int.
2132Default argument promotion : unsigned bit-field promoted to unsigned int.
2134Default argument promotion : signed bit-field promoted to signed int.
3319[U] Function called with number of arguments which differs from number of parameters in definition.
3320Type of argument no. %s differs from its type in definition of function.
3330'%s()' has been called with a variable number of arguments.
3335No function declaration. Implicit declaration inserted: 'extern int %s();'.
3441Function call argument is an expression with possible side effects.
6.3.2.3 0435[C] The 'struct'/'union' member '%s' does not exist.
0436[C] Left operand of '.' must be a 'struct' or 'union' object.
0437[C] Left operand of '->' must be a pointer to a 'struct' or 'union' object.
6.3.2.4 0446[C] Operand of ++/-- must have scalar (arithmetic or pointer) type.
0447[C] Operand of ++/-- must be a modifiable object.
0448[C] Operand of ++/-- must not be a pointer to an object of unknown size.
0449[C] Operand of ++/-- must not be a pointer to a function.
3440Using the value resulting from a ++ or -- operation.
6.3.3.1 0446[C] Operand of ++/-- must have scalar (arithmetic or pointer) type.
0447[C] Operand of ++/-- must be a modifiable object.
0448[C] Operand of ++/-- must not be a pointer to an object of unknown size.
0449[C] Operand of ++/-- must not be a pointer to a function.
3440Using the value resulting from a ++ or -- operation.
6.3.3.2 0454[C] The address-of operator '&' cannot be applied to an object declared with 'register'.
0456[C] This expression does not have an address - '&' may only be applied to an lvalue or a function designator.
0457[C] The address-of operator '&' cannot be applied to a bit-field.
0458[C] Indirection operator '*' requires operand of pointer type.
0503[U] Dereference of constant NULL pointer.
0504[U] Definite dereference of NULL pointer.
0505[U] Apparent dereference of NULL pointer.
0506Possible dereference of NULL pointer.
6.3.3.3 0349Using the unary '+' operator.
0466[C] Unary '+' requires arithmetic operand.
0467[C] Operand of '!' must have scalar (arithmetic or pointer) type.
0468[C] Unary '-' requires arithmetic operand.
0469[C] Bitwise not '~' requires integral operand.
3101Unary '-' applied to an operand of type unsigned int or unsigned long gives an unsigned result.
3102Unary '-' applied to an operand whose underlying type is unsigned.
3343Logical NOT being performed on one operand of a comparison.
3600Using the unary '+' operator.
4110Operand of ! operator is an arithmetic or bitwise expression.
4114Operand of ~ operator is a 'Boolean' expression.
4116Operand of logical ! operator is not an 'essentially Boolean' expression.
6.3.3.4 0473[Q] Result of 'sizeof' operation will not fit in configured type for 'size_t'.
0475[u] Operand of 'sizeof' is an expression designating a bit-field.
0476[C] 'sizeof' cannot be applied to a bit-field.
0477[C] 'sizeof' cannot be applied to a function.
0478[C] 'sizeof' cannot be applied to an object of unknown size.
3307The operand of 'sizeof' is an expression with implied side effects, but they will not be evaluated.
3470The operand of 'sizeof' is not an expression which designates either an object or a type.
6.3.4 0301[u] Cast between a pointer to object and a floating type.
0302[u] Cast between a pointer to function and a floating type.
0303[I] Cast between a pointer to volatile object and an integral type.
0305[I] Cast between a pointer to function and an integral type.
0306[I] Cast between a pointer to object and an integral type.
0307[u] Cast between a pointer to object and a pointer to function.
0308Non-portable cast involving pointer to an incomplete type.
0309[U] Integral type is not large enough to hold a pointer value.
0310Casting to different object pointer type.
0313Casting to different function pointer type.
0314[I] Cast from a pointer to object type to a pointer to void.
0315[I] Implicit conversion from a pointer to object type to a pointer to void.
0316[I] Cast from a pointer to void to a pointer to object type.
0317[I] Implicit conversion from a pointer to void to a pointer to object type.
0318Redundant type qualifier used in cast
0450[C] An expression of array type cannot be cast.
0481[C] Only scalar expressions may be cast to other types.
0482[C] Expressions may only be cast to 'void' or scalar types.
6.3.5 0493[C] Type of left operand is not compatible with this operator.
0494[C] Type of right operand is not compatible with this operator.
0495[C] Left operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
0496[C] Right operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
0584Possible division by zero.
0585[U] Apparent division by zero.
0586[U] Division by constant zero.
0587[U] Definite division by zero.
3103Result of signed division or remainder operation may be implementation defined.
6.3.6 0483[C] A pointer to an object of unknown size cannot be the operand of an addition operator.
0484[C] A pointer to an object of unknown size cannot be the operand of a subtraction operator.
0485[C] Only integral expressions may be added to pointers.
0486[C] Only integral expressions and compatible pointers may be subtracted from pointers.
0487[C] If two pointers are subtracted, they must be pointers that address compatible types.
0488Performing pointer arithmetic.
0489The integer value 1 is being added or subtracted from a pointer.
3680[U] Access outside bounds of array using a constant array subscript.
3685[U] Definite access outside bounds of array.
3689[U] Apparent access outside bounds of array.
6.3.7 0271[U] Left shift operation on constant signed expression generating an undefined value.
0294[U] Definite signed left shift operation generating an undefined value.
0295[U] Apparent signed left shift operation generating an undefined value.
0495[C] Left operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
0496[C] Right operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
0499Right operand of shift operator is greater than or equal to the width of the essential type of the left operand.
0500[U] Right operand of shift operator is negative - this is undefined.
0501[U] Right operand of shift operator is too large - this is undefined.
3301Truncation of bits in an unsigned left shift operation on a constant value.
6.3.8 0490Relational operator used to compare two pointers.
0513[C] Relational operator used to compare pointers to incompatible types.
0514[C] Relational operator used to compare a pointer with an incompatible operand.
4112Left hand operand of relational operator is a 'Boolean' expression.
4113Both operands of relational operator are 'Boolean' expressions.
6.3.9 0515[C] Equality operator used to compare a pointer with an incompatible operand.
6.4 0271[U] Left shift operation on constant signed expression generating an undefined value.
0278[C] Overflow in signed arithmetic operation on constant operands.
0294[U] Definite signed left shift operation generating an undefined value.
0295[U] Apparent signed left shift operation generating an undefined value.
0580[C] Constant is too large to be representable.
0685[C] Initializer for any object with static storage duration must be a constant expression.
6.5 0547[C] This declaration of tag '%s' conflicts with a previous declaration.
0605[C] A declaration must declare a tag or an identifier.
0619[C] The identifier '%s' has already been defined in the current scope within the ordinary identifier namespace.
0622[C] The identifier '%s' has been declared both with and without linkage in the same scope.
0623[U] '%s' has incomplete type and no linkage - this is undefined.
0627[C] '%s' has different type to previous declaration in the same scope.
0628[C] '%s' has different type to previous declaration at wider scope.
0631[C] More than one declaration of '%s' (with no linkage).
0638[C] Duplicate member name '%s' in 'struct' or 'union'.
0653[C] Duplicate definition of 'struct', 'union' or 'enum' tag '%s'.
0664[C] Parameter specified with type 'void'.
0665[C] Two parameters have been declared with the same name '%s'.
6.5.1 0304[U] The address of an array declared 'register' may not be computed.
0616[C] Illegal combination of type specifiers or storage class specifiers.
0661[U] '%s()' may not have a storage class specifier of 'static' when declared at block scope.
3620'register' may be illegal on array and 'struct' / 'union' types in some compilers.
6.5.2 0616[C] Illegal combination of type specifiers or storage class specifiers.
6.5.2.1 0588[C] Width of bit-field must be an integral constant expression.
0633[E] Empty structures and unions are a language extension.
0634[I] Bit-fields in this struct/union have not been declared explicitly as unsigned or signed.
0635[E] Bit-fields in this struct/union have been declared with types other than int, signed int or unsigned int.
0636[U] There are no named members in this 'struct' or 'union'.
0637[S] Storage class specifier is illegal on 'struct' or 'union' member.
0640[C] '%s' in 'struct' or 'union' type may not have 'void' type.
0641[C] '%s' in 'struct' or 'union' type may not have function type.
0642[C] '%s' in 'struct' or 'union' type may not be an array of unknown size.
0643[C] '%s' in 'struct' or 'union' type may not be a 'struct' or 'union' with unknown content.
0644[C] Width of bit-field must be no bigger than the width of an 'int'.
0645[C] A zero width bit-field cannot be given a name.
3659Unnamed zero-width bit-field declared with a signed type.
3660Named bit-field consisting of a single bit declared with a signed type.
3661Plain int bit-field compared with zero.
3662Plain int bit-field compared with negative constant.
3663Unnamed bit-field defined with non-zero width.
3665Unnamed bit-field consisting of a single bit declared with a signed type.
6.5.2.2 0350Using the keyword 'enum'.
0589[C] Enumeration constant must be an integral constant expression.
0646[C] Enumeration constants must have values representable as 'int's.
0722Enum constant not explicitly initialized, but a previous constant has been.
0723Initialize none, first only, or all entries in this enumerator list.
0928[S] Missing comma ',' between enumerators.
0930[C99] Trailing comma at the end of an enumerator-list.
1271Using a non-int expression to define an enum constant.
1317Value of constant expression is not in the enum type to which it is being converted.
1318Object of enum type is being modified with a compound assignment operator.
1319Object of enum type is being modified with an increment or decrement operator.
1323The sizeof operator has been applied to an enum constant.
1400Enum object is being compared with an enum constant of a different enum type using an equality operator.
1401An enum constant is being passed as argument to a function parameter of a different enum type.
1402An enum constant is being assigned to an object of a different enum type.
1403An enum constant is being returned from a function with a different enum return type.
1404Enum object is being compared with an enum constant of a different enum type using a relational operator.
1410Enum object is being compared with a constant, non-enum expression using an equality operator.
1411A constant expression of non-enum type is being passed as argument to a function parameter of enum type.
1412A constant expression of non-enum type is being assigned to an object of enum type.
1413A constant expression of non-enum type is being returned from a function with an enum return type.
1414Enum object is being compared with a constant, non-enum expression using a relational operator.
1420Enum object is being compared with an object of a different enum type using an equality operator.
1421An enum object is being passed as argument to a function parameter of a different enum type.
1422An enum object is being assigned to an object of a different enum type.
1423An enum object is being returned from a function with a different enum return type.
1424Enum object is being compared with an object of a different enum type using a relational operator.
1431An enum object is being passed as argument to a function parameter of non-enum type.
1432An enum object is being assigned to an object of non-enum type.
1433An enum object is being returned from a function with a non-enum return type.
1434This enum constant is not representable in a 16 bit integer type.
1440Enum object is being compared with a non-constant, non-enum expression using an equality operator.
1441A non-constant expression of non-enum type is being passed as argument to a function parameter of enum type.
1442A non-constant expression of non-enum type is being assigned to an object of enum type.
1443A non-constant expression of non-enum type is being returned from a function with an enum return type.
1444Enum object is being compared with a non-constant, non-enum expression using a relational operator.
1460'Switch' label value, %s, not contained in enum type.
1461Value of constant expression is not in the enum type to which it is being converted, but is bitwise OR of constants in the enum type.
1470Numeric constant used as 'case' label with 'switch' expression of enum type.
1472Enum constant used as 'case' label with 'switch' expression of different enum type.
1473The 2nd and 3rd operands of this conditional operator (? :) are of different enum types.
1474Object of enum type is being modified with a bitwise compound assignment operator.
1475Range of possible enum values suggests this test is always true.
1476Range of possible enum values suggests this test is always false.
1477Object of enum type is being implicitly compared against zero in a controlling expression.
1478Object of an enum type which does not include a zero value, is being implicitly compared against zero in a controlling expression.
1479Object of enum type is being modified with an arithmetic compound assignment operator.
1480Objects or constants of different enum types are operands of a bitwise operator.
1481Object of enum type is being modified with an increment or decrement operator.
1482Non-constant expression cast to enum type.
1483Enum object or constant passed as argument to function declared in K&R style.
1484Constant expression cast to enum type.
6.5.2.3 0546[C] 'enum %s' has unknown content. Use of an enum tag with undefined content is not permitted.
0547[C] This declaration of tag '%s' conflicts with a previous declaration.
0653[C] Duplicate definition of 'struct', 'union' or 'enum' tag '%s'.
3313No definition has been found for structure/union tag '%s'.
6.5.3 0617[C99] 'const' qualifier has been duplicated.
0618[C99] 'volatile' qualifier has been duplicated.
0654[U] Using 'const' or 'volatile' in a function return type is undefined.
3204The variable '%s' is only set once and so it could be declared with the 'const' qualifier.
3227The parameter '%s' is never modified and so it could be declared with the 'const' qualifier.
6.5.4 0666[S] Only type qualifiers 'const' or 'volatile' are legal here in a pointer declaration.
0670[S] Function defined with invalid function header syntax.
6.5.4.1 3260Typedef defined with more than 2 levels of indirection.
3261Member of struct/union defined with more than 2 levels of indirection.
3262Object defined or declared with more than 2 levels of indirection.
3263Function defined or declared with a return type which has more than 2 levels of indirection.
6.5.4.2 0590[C] Array bound must be an integral constant expression.
0677[C] Array size is negative, or unrepresentable.
6.5.4.3 0344Using function prototype syntax.
0649[C] K&R style declaration of parameters is not legal after a function header that includes a parameter list.
0650[C] Illegal storage class specifier on named function parameter.
0651[C] Missing type specifiers in function declaration.
0652Identifiers have been provided for some but not all of the parameters in a function prototype.
0655[C] Illegal storage class specifier on unnamed function parameter.
0656[C] Function return type cannot be function or array type, or an incomplete struct/union (for function definition).
0658[U] Parameter cannot have 'void' type.
0664[C] Parameter specified with type 'void'.
1303An empty parameter list in a function type has a different meaning in C++.
2110Default argument promotion : unsigned char promoted to signed int.
2111Default argument promotion : unsigned short promoted to signed int.
2112Default argument promotion : unsigned char promoted to unsigned int.
2113Default argument promotion : unsigned short promoted to unsigned int.
2114Default argument promotion : signed char promoted to signed int.
2115Default argument promotion : signed short promoted to signed int.
2116Default argument promotion : plain char promoted to signed int.
2117Default argument promotion : plain char promoted to unsigned int.
2118Default argument promotion : float promoted to double.
2119Default argument promotion : _Bool promoted to signed int.
2130Default argument promotion : unsigned bit-field promoted to signed int.
2132Default argument promotion : unsigned bit-field promoted to unsigned int.
2134Default argument promotion : signed bit-field promoted to signed int.
3001Function has been declared with an empty parameter list.
3007"void" has been omitted when defining a function with no parameters.
3607Parameter '%s' declared with function type in a K&R style function definition.
6.5.6 0667[U] '%s' is declared as a typedef and may not be redeclared as an object at an inner scope without an explicit type specifier.
0668[U] '%s' is declared as a typedef and may not be redeclared as a member of a 'struct' or 'union' without an explicit type specifier.
3413Macro definition could be replaced by a typedef.
6.5.7 0351Using an initializer when defining an automatic object of struct, union or array type.
0620[C] Cannot initialize '%s' because it has unknown size.
0621[C] The struct/union '%s' cannot be initialized because it has unknown size.
0671[C] Initializer for object of arithmetic type is not of arithmetic type.
0672[U] The initializer for a 'struct', 'union' or array is not enclosed in braces.
0673[C] Initializer points to a more heavily qualified type.
0674[C] Initializer for pointer is of incompatible type.
0675[C] Initializer is not of compatible 'struct'/'union' type.
0682[C] Initializer for object of a character type is a string literal.
0683[C] Initializer for object of a character type is a wide string literal.
0684[C] Too many initializers.
0685[C] Initializer for any object with static storage duration must be a constant expression.
0686Array has fewer initializers than its declared size. Default initialization is applied to the remainder of the array elements.
0687Array has been initialized using concatenated strings and has fewer initializers than its declared size.
0688Array size determined by number of initializers which include concatenated string literals.
0690[C] String literal contains too many characters to initialize object.
0693Struct initializer is missing the optional {.
0694Array initializer is missing the optional {.
0698[C] String literal used to initialize an object of incompatible type.
0699[C] String literal used to initialize a pointer of incompatible type.
0703Structure has fewer initializers than its declared size. Default initialization is applied to the remainder of the members.
0709[C] Initialization of locally declared 'extern %s' is illegal.
1031[C99] Initializer for 'struct', 'union' or array type is not a constant expression.
1312The array being initialized is not large enough to hold a terminating null byte for the string initializer.
3321[U] The variable '%s' is definitely unset at this point.
3347[U] The variable '%s' is apparently unset at this point.
3348Definite use of unset pointer as an argument to a function which expects a read-only pointer.
3349Apparent use of unset pointer as an argument to a function which expects a read-only pointer.
3354Possible use of unset pointer as an argument to a function which expects a read-only pointer.
3674Array size defined implicitly by the number of initializers.
6.6.1 0768[C] 'case' or 'default' found outside a 'switch' statement.
3202The label '%s:' is not used in this function and could be removed.
6.6.2 0604[C99] Declaration appears after statements in a compound statement.
6.6.3 3109Null statement follows other code on the same line.
3110The left-hand operand of this ',' has no side effects.
6.6.4.1 0542[C] Controlling expression must have scalar (arithmetic or pointer) type.
3402Braces are needed to clarify the structure of this 'if'-'if'-'else' statement.
6.6.4.2 0591[C] A 'case' label must be an integral constant expression.
0736[C] 'case' label does not have unique value within this 'switch' statement.
0737[C] More than one 'default' label found in 'switch' statement.
0738[C] Controlling expression in a 'switch' statement must have integral type.
2008Code statements precede the first label in this 'switch' construct.
3315This 'switch' statement contains only a single path - it is redundant.
3352This 'switch' statement contains only two execution paths.
3605Type of 'switch' controlling expression cannot be represented in type 'int'.
6.6.5 0542[C] Controlling expression must have scalar (arithmetic or pointer) type.
6.6.5.3 3419Initialization expression of 'for' statement has no side effects.
3420Increment expression of 'for' statement has no side effects.
6.6.6.1 0708[C] No definition found for the label '%s' in this function.
6.6.6.2 0766[C] 'continue' statement found outside an iteration statement.
6.6.6.3 0767[C] 'break' statement found outside a 'switch' or iteration statement.
6.6.6.4 0744[U] '%s()' has been declared with a non void return type but ends with an implicit 'return ;' statement.
0745[U] 'return;' found in '%s()', which has been defined with a non-'void' return type.
0746[C] 'return exp;' found in '%s()' whose return type is 'void'.
0747[C] 'return exp;' found in '%s()' whose return type is qualified 'void'.
0755[C] 'return' expression is not of arithmetic type.
0756[C] 'return' expression is not of compatible 'struct'/'union' type.
0757[C] 'return' expression points to a more heavily qualified type.
0758[C] 'return' expression is not of compatible pointer type.
3113[U] 'return' statement includes no expression but function '%s()' is implicitly of type 'int'.
3114[U] Function '%s()' is implicitly of type 'int' but ends without returning a value.
3208'%s()' returns a value which is sometimes ignored.
3209'%s()' returns a value which is always ignored.
6.7 0554[C] 'static %s()' has been declared and called but no definition has been given.
0619[C] The identifier '%s' has already been defined in the current scope within the ordinary identifier namespace.
0629[C] More than one definition of '%s' (with internal linkage).
0630[U] More than one definition of '%s' (with external linkage).
0774[C] 'auto' may not be specified on global declaration of '%s'.
0775[C] 'register' may not be specified on global declaration of '%s'.
6.7.1 0491Array subscripting applied to an object of pointer type.
0492Array subscripting applied to a function parameter declared as a pointer.
0649[C] K&R style declaration of parameters is not legal after a function header that includes a parameter list.
0650[C] Illegal storage class specifier on named function parameter.
0655[C] Illegal storage class specifier on unnamed function parameter.
0656[C] Function return type cannot be function or array type, or an incomplete struct/union (for function definition).
0657[C] Unnamed parameter specified in function definition.
0659[C] The identifier '%s' was not given in the parameter list.
3007"void" has been omitted when defining a function with no parameters.
6.7.2 0632[U] Tentative definition of '%s' with internal linkage cannot have unknown size.
6.7.2.TC1 3337The array '%s[]' is defined with a single element because no size has been specified.
6.8 0820[S] '#include' requires a header name.
0823[S] Unexpected '#else' or '#elif' directive follows '#else'.
0824[S] Unexpected '#else' or '#elif' directive found outside a '#if' block.
0825[S] Unexpected '#endif' found outside a '#if' block.
0829[S] Could not find '#endif' preprocessing directive to close '#if...'.
0830[E] Unrecognized text encountered after a preprocessing directive.
0833[S] '#ifdef' or '#ifndef' must be followed by an identifier.
0846[S] '#define' must be followed by an identifier.
0847[S] '#undef' must be followed by an identifier.
0849[S] Preprocessing directive appears in the middle of a line.
0863[S] '#line' encountered without a following line number.
0899[E] Unrecognized preprocessing directive has been ignored - assumed to be a language extension.
1003[E] '#%s' is a language extension for in-line assembler. All statements located between #asm and #endasm will be ignored.
1008[E] '#%s' is not a legal ISO C preprocessing directive.
1010[S] '#%s' is not a valid form of '#if' syntax .
3409The replacement list of function-like macro '%s' is not enclosed in ().
3618Whitespace used after '#' at the start of this preprocessing directive.
3619Whitespace used before '#' at the start of this preprocessing directive.
6.8.1 0352Using the '#elif' preprocessing directive.
0877[C] '#if' and '#elif' expressions may contain only integral constants.
0885[U] The token 'defined' is generated in the expansion of this macro.
0887[U] Use of 'defined' must match either 'defined(identifier)' or 'defined identifier'.
0888[U] 'defined' requires an identifier as an argument.
1028[E] Use of the sizeof operator in a preprocessing directive is a language extension.
3608Using the '#elif' preprocessing directive.
6.8.2 0809[U] The '#include' preprocessing directive has not been followed by <h-char-sequence> or "s-char-sequence".
0815[L] #include <...> file name does not conform strictly to ISO:C90.
0816[L] #include "..." file name does not conform strictly to ISO:C90.
0818[Q] Cannot find '%s' - Perhaps the appropriate search path was not given ?
0819[Q] Cannot open '%s' - Perhaps the appropriate search path was not given ?
0821[C] '#include %s' does not identify a header or source file that can be processed.
1001[E] '#include %s' is a VMS extension.
6.8.3 0804[C] Macro parameter '%s' is not unique.
0805[S] Invalid identifier encountered in macro parameter list.
0806[S] Comma missing in macro parameter list.
0807[S] Identifier missing in macro parameter list.
0834[C] Function-like macro '%s()' is being redefined as an object-like macro.
0835[C] Macro '%s' is being redefined with different parameter names.
0844[C] Macro '%s' is being redefined with a different replacement list.
0845[C] Object-like macro '%s' is being redefined as a function-like macro.
0850[C99] Macro argument is empty.
0851[C] More arguments in macro call than specified in definition.
0852[C] Unable to find the ')' that marks the end of the macro call.
0853[U] Macro arguments contain a sequence of tokens that has the form of a preprocessing directive.
0856[C] Fewer arguments in macro call than specified in definition.
6.8.3.2 0337[U] String literal has undefined value. This may be a result of using '#' on \\.
0341Using the stringify operator '#'.
0803[C] The '#' operator may only appear before a macro parameter.
0880Using # and ## operators in the same macro definition.
0884Using multiple # operators in the same macro definition.
0899[E] Unrecognized preprocessing directive has been ignored - assumed to be a language extension.
6.8.3.3 0342Using the glue operator '##'.
0801[C] The '##' operator may not be the first token in a macro replacement list.
0802[C] The '##' operator may not be the last token in a macro replacement list.
0872[U] Result of '##' operator is not a legal preprocessing token.
0881Using multiple ## operators in the same macro definition.
6.8.3.4 0855Preprocessing results in a sequence of tokens that has the form of a preprocessing directive.
3443Macro '%s' has a replacement list which appears recursive.
6.8.3.5 0841Using '#undef'.
0842Using #define or #undef inside a function.
6.8.4 0864[U] '#line' directive specifies line number which is not in the range 1 to 32767.
0865[U] '#line' directive is badly formed.
0866[C] The string literal in a '#line' directive cannot be a 'wide string literal'.
0867[U] '#line' has not been followed by a line number.
3118Using the #line preprocessing directive.
6.8.5 0340Using the '#error' preprocessing directive.
6.8.6 3116Unrecognized #pragma arguments '%s' This #pragma directive has been ignored.
3117Expected 'on' or 'off' after '#pragma' flag.
6.8.7 1690Null preprocessing directive used.
1691Null preprocessing directive used in an excluded section of code.
6.8.8 0836[U] Definition of macro named 'defined'.
0837[U] Use of '#undef' to remove the operator 'defined'.
0848[U] Attempting to #undef '%s', which is a predefined macro name.
0854[U] Attempting to #define '%s', which is a predefined macro name.
1327The macro __STDC__ has been used. It may not be present in a C++ environment.
6.9.2 0235[U] Unknown escape sequence.
6.9.3 3228Storage class specifier not positioned at the beginning of declaration.
6.9.4 1303An empty parameter list in a function type has a different meaning in C++.
3001Function has been declared with an empty parameter list.
6.9.5 3002Defining '%s()' with an identifier list and separate parameter declarations is an obsolescent feature.
7.1.2.1 4600The macro '%1s' is also defined in '<%2s>'.
4601The macro '%1s' is the name of an identifier in '<%2s>'.
4602The identifier '%1s' is declared as a macro in '<%2s>'.
4603The object/function '%1s'is being defined with the same name as an ordinary identifier defined in '<%2s>'.
4604The object/function '%1s' is being declared with the same name as an ordinary identifier defined in '<%2s>'.
4605The typedef '%1s' is also defined in '<%2s>'.
4606The typedef '%1s' has the same name as another ordinary identifier in '<%2s>'.
4607The enum constant '%1s' has the same name as another ordinary identifier in '<%2s>'.
4608The tag '%1s' is also defined in '<%2s>'.
7.1.3 0602[U] The identifier '%s' is reserved for use by the library.
7.1.5 0473[Q] Result of 'sizeof' operation will not fit in configured type for 'size_t'.
7.13 4640The macro '%1s' could conflict in the future with the name of a macro in '<%2s>'.
4641The identifier '%1s' could conflict in the future with the name of a macro in '<%2s>'.
4642The macro '%1s' could conflict in the future with the name of a function in '<%2s>'.
4643The identifier '%1s' could conflict in the future with the name of a function in '<%2s>'.
4644The macro '%1s' could conflict in the future with the name of a typedef in '<%2s>'.
4645The identifier '%1s' could conflict in the future with the name of a typedef in '<%2s>'.
7.2 3437[u] The assert macro has been suppressed to call a function of that name.
3438[U] #undef'ing the assert macro to call a function of that name causes undefined behaviour.
7.8.1 2110Default argument promotion : unsigned char promoted to signed int.
2111Default argument promotion : unsigned short promoted to signed int.
2112Default argument promotion : unsigned char promoted to unsigned int.
2113Default argument promotion : unsigned short promoted to unsigned int.
2114Default argument promotion : signed char promoted to signed int.
2115Default argument promotion : signed short promoted to signed int.
2116Default argument promotion : plain char promoted to signed int.
2117Default argument promotion : plain char promoted to unsigned int.
2118Default argument promotion : float promoted to double.
2119Default argument promotion : _Bool promoted to signed int.
2130Default argument promotion : unsigned bit-field promoted to signed int.
2132Default argument promotion : unsigned bit-field promoted to unsigned int.
2134Default argument promotion : signed bit-field promoted to signed int.
7.9 0207[U] 'scanf' expects address of objects being stored into.
7.9.6 0160[U] Using unsupported conversion specifier number %s.
0184[U] Insufficient arguments to satisfy conversion specifier, number %s.
0185[U] Call contains more arguments than conversion specifiers.
0186[U] A call to this function must include at least one argument.
7.9.6.1 0161[U] Unknown length modifier used with 'i' or 'd' conversion specifier, number %s.
0162[U] Unknown length modifier used with 'o' conversion specifier, number %s.
0163[U] Unknown length modifier used with 'u' conversion specifier, number %s.
0164[U] Unknown length modifier used with 'x' conversion specifier, number %s.
0165[U] Unknown length modifier used with 'X' conversion specifier, number %s.
0166[U] Unknown length modifier used with 'f' conversion specifier, number %s.
0167[U] Unknown length modifier used with 'e' conversion specifier, number %s.
0168[U] Unknown length modifier used with 'E' conversion specifier, number %s.
0169[U] Unknown length modifier used with 'g' conversion specifier, number %s.
0170[U] Unknown length modifier used with 'G' conversion specifier, number %s.
0171[U] Unknown length modifier used with 'c' conversion specifier, number %s.
0172[U] Unknown length modifier used with '%%' conversion specifier, number %s.
0173[U] Unknown length modifier used with 's' conversion specifier, number %s.
0174[U] Unknown length modifier used with 'n' conversion specifier, number %s.
0175[U] Unknown length modifier used with 'p' conversion specifier, number %s.
0176[U] Incomplete conversion specifier, number %s.
0177[U] Field width of format conversion specifier exceeds 509 characters.
0178[U] Precision of format conversion specifier exceeds 509 characters.
0179[U] Argument type does not match conversion specifier number %s.
7.9.6.2 0190[U] Using unsupported conversion specifier number %s.
0191[U] Unknown length modifier used with 'd/i/n' conversion specifier, number %s.
0192[U] Unknown length modifier used with 'o' conversion specifier, number %s.
0193[U] Unknown length modifier used with 'u' conversion specifier, number %s.
0194[U] Unknown length modifier used with 'x/X' conversion specifier, number %s.
0195[U] Unknown length modifier used with 'e/E/f/F/g/G' conversion specifier, number %s.
0196[U] Unknown length modifier used with 's' conversion specifier, number %s.
0197[U] Unknown length modifier used with 'p' conversion specifier, number %s.
0198[U] Unknown length modifier used with '%%' conversion specifier, number %s.
0199[U] Unknown length modifier used with '[' conversion specifier, number %s.
0200[U] Unknown length modifier used with 'c' conversion specifier, number %s.
0201[U] Incomplete conversion specifier, number %s.
0202[I] '-' character in '[]' conversion specification is implementation defined.
0203[U] Value of character prior to '-' in '[]' is greater than following character.
0204[U] Field width of format conversion specifier exceeds 509 characters.
0206[U] Argument type does not match conversion specifier number %s.
0208[U] Same character occurs in scanset more than once.
[Back to Top]

ISO:C99 Language

ItemMessage Message Text
Integer 4621The macro '%1s' may also be defined as a typedef in '<%2s>'.
4623The typedef '%1s' may also be defined in '<%2s>'.
4624The ordinary identifier '%1s' may be defined as a typedef in '<%2s>'.
5.2.4.1 0371[L] Nesting levels of blocks exceeds 127 - program does not conform strictly to ISO:C99.
0372[L] More than 63 levels of nested conditional inclusion - program does not conform strictly to ISO:C99.
0372[L] More than 63 levels of nested conditional inclusion - program does not conform strictly to ISO:C99.
0372[L] More than 63 levels of nested conditional inclusion - program does not conform strictly to ISO:C99.
0375[L] Nesting of parenthesized expressions exceeds 63 - program does not conform strictly to ISO:C99.
0375[L] Nesting of parenthesized expressions exceeds 63 - program does not conform strictly to ISO:C99.
0375[L] Nesting of parenthesized expressions exceeds 63 - program does not conform strictly to ISO:C99.
0375[L] Nesting of parenthesized expressions exceeds 63 - program does not conform strictly to ISO:C99.
0375[L] Nesting of parenthesized expressions exceeds 63 - program does not conform strictly to ISO:C99.
0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
0388[L] '#include "%s"' causes nesting to exceed 15 levels - program does not conform strictly to ISO:C99.
0388[L] '#include "%s"' causes nesting to exceed 15 levels - program does not conform strictly to ISO:C99.
0390[L] Number of members in 'struct' or 'union' exceeds 1023 - program does not conform strictly to ISO:C99.
0391[L] Number of enumeration constants exceeds 1023 - program does not conform strictly to ISO:C99.
0392[L] Nesting of 'struct' or 'union' types exceeds 63 - program does not conform strictly to ISO:C99.
6.10 1030[C99] Macro defined with variable argument list.
6.10.3 0850[C99] Macro argument is empty.
1033[C] The identifier __VA_ARGS__ may only be used in the replacement list of a variadic macro.
6.2.5 1027[C99] Use of type 'long long'.
6.3.1.2 0361An expression of pointer type is being cast to type _Bool.
0362An expression of essentially Boolean type is being cast to a pointer.
6.4.4.1 1018[C99] Use of LL suffix.
6.4.9 1011[C99] Use of '//' comment.
6.5.16.1 0360An expression of pointer type is being converted to type _Bool on assignment.
6.5.2.5 1054[C99] A compound literal has been used.
1055[C99] The keyword 'inline' has been used.
6.5.3.4 0945[C99] WARNING. Operand of sizeof is an expression of variable length array type.
6.5.7 0271[U] Left shift operation on constant signed expression generating an undefined value.
0294[U] Definite signed left shift operation generating an undefined value.
0295[U] Apparent signed left shift operation generating an undefined value.
6.7.3 0617[C99] 'const' qualifier has been duplicated.
0618[C99] 'volatile' qualifier has been duplicated.
6.7.5.2 0940[C] Illegal usage of a variably modified type.
1051[C99] A variable length array has been declared.
1052[C99] A variable length array of unspecified size has been declared.
6.7.5.3 0942[U] A * can only be used to specify array size within function prototype scope.
6.7.8 0904[S] Invalid designator.
0941[C] A variable length array may not be initialized.
1053[C99] Designators have been used in this initialization list.
6.8.5 0320[C99] Declaration within 'for' statement.
0321[C] Declaration within 'for' statement defines an identifier '%s' which is not an object.
0322[C] Illegal storage class specifier used in 'for' statement declaration.
6.8.6.1 0943[C] Jump to label '%s' is a jump into the scope of an identifier with variably modified type.
0944[C] The label '%s' is inside the scope of an identifier with variably modified type.
7.1.3 4600The macro '%1s' is also defined in '<%2s>'.
4601The macro '%1s' is the name of an identifier in '<%2s>'.
4602The identifier '%1s' is declared as a macro in '<%2s>'.
4603The object/function '%1s'is being defined with the same name as an ordinary identifier defined in '<%2s>'.
4604The object/function '%1s' is being declared with the same name as an ordinary identifier defined in '<%2s>'.
4605The typedef '%1s' is also defined in '<%2s>'.
4606The typedef '%1s' has the same name as another ordinary identifier in '<%2s>'.
4607The enum constant '%1s' has the same name as another ordinary identifier in '<%2s>'.
4608The tag '%1s' is also defined in '<%2s>'.
7.19.6 0180[C99] Use of ll for conversion specifier.
7.26 4640The macro '%1s' could conflict in the future with the name of a macro in '<%2s>'.
4641The identifier '%1s' could conflict in the future with the name of a macro in '<%2s>'.
4642The macro '%1s' could conflict in the future with the name of a function in '<%2s>'.
4643The identifier '%1s' could conflict in the future with the name of a function in '<%2s>'.
4644The macro '%1s' could conflict in the future with the name of a typedef in '<%2s>'.
4645The identifier '%1s' could conflict in the future with the name of a typedef in '<%2s>'.
7.8 4620The macro '%1s' may also be defined as a macro in '<%2s>'.
4622The identifier '%1s' may be defined as a macro in '<%2s>'.
[Back to Top]

ISO C++ Language

ItemMessage Message Text
3.2 1509'name' has external linkage and has multiple definitions.
1510'name' has external linkage and has incompatible declarations.
4.1/1 2810Constant: Dereference of NULL pointer.
2811Definite: Dereference of NULL pointer.
2812Apparent: Dereference of NULL pointer.
2813Suspicious: Dereference of NULL pointer.
2814Possible: Dereference of NULL pointer.
4.7/2 2890Constant: Negative value implicitly converted to an unsigned type.
2891Definite: Negative value implicitly converted to an unsigned type.
2892Apparent: Negative value implicitly converted to an unsigned type.
2893Suspicious: Negative value implicitly converted to an unsigned type.
2895Constant: Negative value cast to an unsigned type.
2896Definite: Negative value cast to an unsigned type.
2897Apparent: Negative value cast to an unsigned type.
2898Suspicious: Negative value cast to an unsigned type.
2900Constant: Positive integer value truncated by implicit conversion to a smaller unsigned type.
2901Definite: Positive integer value truncated by implicit conversion to a smaller unsigned type.
2902Apparent: Positive integer value truncated by implicit conversion to a smaller unsigned type.
2903Suspicious: Positive integer value truncated by implicit conversion to a smaller unsigned type.
2905Constant: Positive integer value truncated by cast to a smaller unsigned type.
2906Definite: Positive integer value truncated by cast to a smaller unsigned type.
2907Apparent: Positive integer value truncated by cast to a smaller unsigned type.
2908Suspicious: Positive integer value truncated by cast to a smaller unsigned type.
2910Constant: Wraparound in unsigned arithmetic operation.
2911Definite: Wraparound in unsigned arithmetic operation.
2912Apparent: Wraparound in unsigned arithmetic operation.
2913Suspicious: Wraparound in unsigned arithmetic operation.
4.7/3 2850Constant: Implicit conversion to a signed integer type of insufficient size.
2851Definite: Implicit conversion to a signed integer type of insufficient size.
2852Apparent: Implicit conversion to a signed integer type of insufficient size.
2853Suspicious: Implicit conversion to a signed integer type of insufficient size.
2855Constant: Casting to a signed integer type of insufficient size.
2856Definite: Casting to a signed integer type of insufficient size.
2857Apparent: Casting to a signed integer type of insufficient size.
2858Suspicious: Casting to a signed integer type of insufficient size.
5.3.1/1 2810Constant: Dereference of NULL pointer.
2811Definite: Dereference of NULL pointer.
2812Apparent: Dereference of NULL pointer.
2813Suspicious: Dereference of NULL pointer.
2814Possible: Dereference of NULL pointer.
2840Constant: Dereference of an invalid pointer value.
2841Definite: Dereference of an invalid pointer value.
2842Apparent: Dereference of an invalid pointer value.
2843Suspicious: Dereference of an invalid pointer value.
2845Constant: Maximum number of characters to be written is larger than the target buffer size.
2846Definite: Maximum number of characters to be written is larger than the target buffer size.
2847Apparent: Maximum number of characters to be written is larger than the target buffer size.
2848Suspicious: Maximum number of characters to be written is larger than the target buffer size.
5.6/4 2830Constant: Division by zero.
2831Definite: Division by zero.
2832Apparent: Division by zero.
2833Suspicious: Division by zero.
2834Possible: Division by zero.
5.7/5 2771Definite: These pointers address different objects.
2772Apparent: These pointers address different objects.
2773Suspicious: These pointers address different objects.
2820Constant: Arithmetic operation on NULL pointer.
2821Definite: Arithmetic operation on NULL pointer.
2822Apparent: Arithmetic operation on NULL pointer.
2823Suspicious: Arithmetic operation on NULL pointer.
2824Possible: Arithmetic operation on NULL pointer.
2840Constant: Dereference of an invalid pointer value.
2841Definite: Dereference of an invalid pointer value.
2842Apparent: Dereference of an invalid pointer value.
2843Suspicious: Dereference of an invalid pointer value.
2845Constant: Maximum number of characters to be written is larger than the target buffer size.
2846Definite: Maximum number of characters to be written is larger than the target buffer size.
2847Apparent: Maximum number of characters to be written is larger than the target buffer size.
2848Suspicious: Maximum number of characters to be written is larger than the target buffer size.
2930Constant: Computing an invalid pointer value.
2931Definite: Computing an invalid pointer value.
2932Apparent: Computing an invalid pointer value.
2933Suspicious: Computing an invalid pointer value.
5.8 2920Constant: Left shift operation on expression of unsigned type results in loss of high order bits.
2921Definite: Left shift operation on expression of unsigned type results in loss of high order bits.
2922Apparent: Left shift operation on expression of unsigned type results in loss of high order bits.
2923Suspicious: Left shift operation on expression of unsigned type results in loss of high order bits.
5.8/1 2790Constant: Right hand operand of shift operator is negative or too large.
2791Definite: Right hand operand of shift operator is negative or too large.
2792Apparent: Right hand operand of shift operator is negative or too large.
2793Suspicious: Right hand operand of shift operator is negative or too large.
5.8/3 2860Constant: Implementation-defined value resulting from left shift operation on expression of signed type.
2861Definite: Implementation-defined value resulting from left shift operation on expression of signed type.
2862Apparent: Implementation-defined value resulting from left shift operation on expression of signed type.
2863Suspicious: Implementation-defined value resulting from left shift operation on expression of signed type.
5/5 2800Constant: Overflow in signed arithmetic operation.
2801Definite: Overflow in signed arithmetic operation.
2802Apparent: Overflow in signed arithmetic operation.
2803Suspicious: Overflow in signed arithmetic operation.
[Back to Top]

Identifiers

Message Message Text
0602[U] The identifier '%s' is reserved for use by the library.
0622[C] The identifier '%s' has been declared both with and without linkage in the same scope.
0627[C] '%s' has different type to previous declaration in the same scope.
0776[L] External identifier matches other external identifier(s) (e.g. '%s') in first 6 characters - program does not conform strictly to ISO:C90.
0777[U] External identifier does not differ from other identifier(s) (e.g. '%s') within the specified number of significant characters.
0778[L] Identifier matches other identifier(s) (e.g. '%s') in first 31 characters - program does not conform strictly to ISO:C90.
0779[U] Identifier does not differ from other identifier(s) (e.g. '%s') within the specified number of significant characters.
0780Another identifier '%s' is already in scope in a different namespace.
0781'%s' is being used as a structure/union member as well as being a label, tag or ordinary identifier.
1100The label '%s' is also declared as a typedef.
4150The identifier '%s' may cause confusion because it contains only the letter 'l' and and the number '1'.
4151The identifier '%s' may cause confusion because it contains only the letter 'O' and the number '0'.
4152The identifier '%s' may cause confusion because the letter 'l' and the number '1' are adjacent.
4153The identifier '%s' may cause confusion because the letter 'O' and the number '0' are adjacent.
[Back to Top]

Implicit Casts - float to int

Message Message Text
3799Implicit conversion: float to char.
3800Implicit conversion: float to signed char.
3801Implicit conversion: float to unsigned char.
3802Implicit conversion: float to short.
3803Implicit conversion: float to unsigned short.
3804Implicit conversion: float to int.
3805Implicit conversion: float to unsigned int.
3806Implicit conversion: float to long.
3807Implicit conversion: float to unsigned long.
3810Implicit conversion: double to char.
3811Implicit conversion: double to signed char.
3812Implicit conversion: double to unsigned char.
3813Implicit conversion: double to short.
3814Implicit conversion: double to unsigned short.
3815Implicit conversion: double to int.
3816Implicit conversion: double to unsigned int.
3817Implicit conversion: double to long.
3818Implicit conversion: double to unsigned long.
3821Implicit conversion: long double to char.
3822Implicit conversion: long double to signed char.
3823Implicit conversion: long double to unsigned char.
3824Implicit conversion: long double to short.
3825Implicit conversion: long double to unsigned short .
3826Implicit conversion: long double to int.
3827Implicit conversion: long double to unsigned int.
3828Implicit conversion: long double to long.
3829Implicit conversion: long double to unsigned long.
3876Implicit conversion: float to long long.
3877Implicit conversion: float to unsigned long long.
3878Implicit conversion: double to long long.
3879Implicit conversion: double to unsigned long long.
3880Implicit conversion: long double to long long.
3881Implicit conversion: long double to unsigned long long.
3999float value returned from char %s().
4000float value returned from signed char %s().
4001float value returned from unsigned char %s().
4002float value returned from short %s().
4003float value returned from unsigned short %s().
4004float value returned from int %s().
4005float value returned from unsigned int %s().
4006float value returned from long %s().
4007float value returned from unsigned long %s().
4010double value returned from char %s().
4011double value returned from signed char %s().
4012double value returned from unsigned char %s().
4013double value returned from short %s().
4014double value returned from unsigned short %s().
4015double value returned from int %s().
4016double value returned from unsigned int %s().
4017double value returned from long %s().
4018double value returned from unsigned long %s().
4021long double value returned from char %s().
4022long double value returned from signed char %s().
4023long double value returned from unsigned char %s().
4024long double value returned from short %s().
4025long double value returned from unsigned short %s().
4026long double value returned from int %s().
4027long double value returned from unsigned int %s().
4028long double value returned from long %s().
4029long double value returned from unsigned long %s().
4076float value returned from long long %s().
4077float value returned from unsigned long long %s().
4078double value returned from long long %s().
4079double value returned from unsigned long long %s().
4080long double value returned from long long %s().
4081long double value returned from unsigned long long %s().
[Back to Top]

Implicit Casts - int to float

Message Message Text
3708Implicit conversion: char to float.
3709Implicit conversion: char to double.
3710Implicit conversion: char to long double.
3719Implicit conversion: unsigned char to float.
3720Implicit conversion: unsigned char to double.
3721Implicit conversion: unsigned char to long double.
3730Implicit conversion: signed char to float.
3731Implicit conversion: signed char to double.
3732Implicit conversion: signed char to long double.
3741Implicit conversion: short to float.
3742Implicit conversion: short to double.
3743Implicit conversion: short to long double.
3752Implicit conversion: unsigned short to float.
3753Implicit conversion: unsigned short to double.
3754Implicit conversion: unsigned short to long double.
3763Implicit conversion: int to float.
3764Implicit conversion: int to double.
3765Implicit conversion: int to long double.
3774Implicit conversion: unsigned int to float.
3775Implicit conversion: unsigned int to double.
3776Implicit conversion: unsigned int to long double.
3785Implicit conversion: long to float.
3786Implicit conversion: long to double.
3787Implicit conversion: long to long double.
3796Implicit conversion: unsigned long to float.
3797Implicit conversion: unsigned long to double.
3798Implicit conversion: unsigned long to long double.
3860Implicit conversion: long long to float.
3861Implicit conversion: long long to double.
3862Implicit conversion: long long to long double.
3873Implicit conversion: unsigned long long to float.
3874Implicit conversion: unsigned long long to double.
3875Implicit conversion: unsigned long long to long double.
3908char value returned from float %s().
3909char value returned from double %s().
3910char value returned from long double %s().
3919unsigned char value returned from float %s().
3920unsigned char value returned from double %s().
3921unsigned char value returned from long double %s().
3930signed char value returned from float %s().
3931signed char value returned from double %s().
3932signed char value returned from long double %s().
3941short value returned from float %s().
3942short value returned from double %s().
3943short value returned from long double %s().
3952unsigned short value returned from float %s().
3953unsigned short value returned from double %s().
3954unsigned short value returned from long double %s().
3963int value returned from float %s().
3964int value returned from double %s().
3965int value returned from long double %s().
3974unsigned int value returned from float %s().
3975unsigned int value returned from double %s().
3976unsigned int value returned from long double %s().
3985long value returned from float %s().
3986long value returned from double %s().
3987long value returned from long double %s().
3996unsigned long value returned from float %s().
3997unsigned long value returned from double %s().
3998unsigned long value returned from long double %s().
4060long long value returned from float %s().
4061long long value returned from double %s().
4062long long value returned from long double %s().
4073unsigned long long value returned from float %s().
4074unsigned long long value returned from double %s().
4075unsigned long long value returned from long double %s().
[Back to Top]

Implicit Casts - Narrowing

Message Message Text
3734Implicit conversion: short to signed char.
3746Implicit conversion: unsigned short to unsigned char.
3756Implicit conversion: int to signed char.
3758Implicit conversion: int to short.
3768Implicit conversion: unsigned int to unsigned char.
3770Implicit conversion: unsigned int to unsigned short.
3778Implicit conversion: long to signed char.
3780Implicit conversion: long to short.
3782Implicit conversion: long to int.
3790Implicit conversion: unsigned long to unsigned char.
3792Implicit conversion: unsigned long to unsigned short.
3794Implicit conversion: unsigned long to unsigned int.
3819Implicit conversion: double to float.
3830Implicit conversion: long double to float.
3831Implicit conversion: long double to double.
3851Implicit conversion: long long to signed char.
3853Implicit conversion: long long to short.
3855Implicit conversion: long long to int.
3857Implicit conversion: long long to long
3865Implicit conversion: unsigned long long to unsigned char.
3867Implicit conversion: unsigned long long to unsigned short.
3869Implicit conversion: unsigned long long to unsigned int.
3871Implicit conversion: unsigned long long to unsigned long.
3934short value returned from signed char %s().
3946unsigned short value returned from unsigned char %s().
3956int value returned from signed char %s().
3958int value returned from short %s().
3968unsigned int value returned from unsigned char %s().
3970unsigned int value returned from unsigned short %s().
3978long value returned from signed char %s().
3980long value returned from short %s().
3982long value returned from int %s().
3990unsigned long value returned from unsigned char %s().
3992unsigned long value returned from unsigned short %s().
3994unsigned long value returned from unsigned int %s().
4019double value returned from float %s().
4030long double value returned from float %s().
4031long double value returned from double %s().
4051long long value returned from signed char %s().
4053long long value returned from short %s().
4055long long value returned from int %s().
4057long long value returned from long %s().
4065unsigned long long value returned from unsigned char %s().
4067unsigned long long value returned from unsigned short %s().
4069unsigned long long value returned from unsigned int %s().
4071unsigned long long value returned from unsigned long %s().
[Back to Top]

Implicit Casts - Plain Char Casts

Message Message Text
3700Implicit conversion: char to signed char.
3701Implicit conversion: char to unsigned char.
3702Implicit conversion: char to short.
3703Implicit conversion: char to unsigned short.
3704Implicit conversion: char to int.
3705Implicit conversion: char to unsigned int.
3706Implicit conversion: char to long.
3707Implicit conversion: char to unsigned long.
3708Implicit conversion: char to float.
3709Implicit conversion: char to double.
3710Implicit conversion: char to long double.
3711Implicit conversion: unsigned char to char.
3722Implicit conversion: signed char to char.
3733Implicit conversion: short to char.
3744Implicit conversion: unsigned short to char.
3755Implicit conversion: int to char.
3766Implicit conversion: unsigned int to char.
3777Implicit conversion: long to char.
3788Implicit conversion: unsigned long to char.
3799Implicit conversion: float to char.
3810Implicit conversion: double to char.
3821Implicit conversion: long double to char.
3832Implicit conversion: char to long long.
3833Implicit conversion: char to unsigned long long.
3850Implicit conversion: long long to char.
3863Implicit conversion: unsigned long long to char.
3900char value returned from signed char %s().
3901char value returned from unsigned char %s().
3902char value returned from short %s().
3903char value returned from unsigned short %s().
3904char value returned from int %s().
3905char value returned from unsigned int %s().
3906char value returned from long %s().
3907char value returned from unsigned long %s().
3908char value returned from float %s().
3909char value returned from double %s().
3910char value returned from long double %s().
3911unsigned char value returned from char %s().
3922signed char value returned from char %s().
3933short value returned from char %s().
3944unsigned short value returned from char %s().
3955int value returned from char %s().
3966unsigned int value returned from char %s().
3977long value returned from char %s().
3988unsigned long value returned from char %s().
3999float value returned from char %s().
4010double value returned from char %s().
4021long double value returned from char %s().
4032char value returned from long long %s().
4033char value returned from unsigned long long %s().
4050long long value returned from char %s().
4063unsigned long long value returned from char %s().
[Back to Top]

Integral promotion

Message Message Text
2100Integral promotion : unsigned char promoted to signed int.
2101Integral promotion : unsigned short promoted to signed int.
2102Integral promotion : unsigned char promoted to unsigned int.
2103Integral promotion : unsigned short promoted to unsigned int.
2104Integral promotion : signed char promoted to signed int.
2105Integral promotion : signed short promoted to signed int.
2106Integral promotion : plain char promoted to signed int.
2107Integral promotion : plain char promoted to unsigned int.
2110Default argument promotion : unsigned char promoted to signed int.
2111Default argument promotion : unsigned short promoted to signed int.
2112Default argument promotion : unsigned char promoted to unsigned int.
2113Default argument promotion : unsigned short promoted to unsigned int.
2114Default argument promotion : signed char promoted to signed int.
2115Default argument promotion : signed short promoted to signed int.
2116Default argument promotion : plain char promoted to signed int.
2117Default argument promotion : plain char promoted to unsigned int.
2118Default argument promotion : float promoted to double.
2119Default argument promotion : _Bool promoted to signed int.
2120Integral promotion : unsigned bit-field promoted to signed int.
2122Integral promotion : unsigned bit-field promoted to unsigned int.
2124Integral promotion : signed bit-field promoted to signed int.
2130Default argument promotion : unsigned bit-field promoted to signed int.
2132Default argument promotion : unsigned bit-field promoted to unsigned int.
2134Default argument promotion : signed bit-field promoted to signed int.
[Back to Top]

Implicit Casts - Signed to Unsigned

Message Message Text
3723Implicit conversion: signed char to unsigned char.
3725Implicit conversion: signed char to unsigned short.
3727Implicit conversion: signed char to unsigned int.
3729Implicit conversion: signed char to unsigned long.
3735Implicit conversion: short to unsigned char.
3736Implicit conversion: short to unsigned short.
3738Implicit conversion: short to unsigned int.
3740Implicit conversion: short to unsigned long.
3757Implicit conversion: int to unsigned char.
3759Implicit conversion: int to unsigned short.
3760Implicit conversion: int to unsigned int.
3762Implicit conversion: int to unsigned long.
3779Implicit conversion: long to unsigned char.
3781Implicit conversion: long to unsigned short.
3783Implicit conversion: long to unsigned int.
3784Implicit conversion: long to unsigned long.
3837Implicit conversion: signed char to unsigned long long.
3839Implicit conversion: short to unsigned long long.
3843Implicit conversion: int to unsigned long long.
3847Implicit conversion: long to unsigned long long.
3852Implicit conversion: long long to unsigned char.
3854Implicit conversion: long long to unsigned short.
3856Implicit conversion: long long to unsigned int.
3858Implicit conversion: long long to unsigned long.
3859Implicit conversion: long long to unsigned long long.
3923signed char value returned from unsigned char %s().
3925signed char value returned from unsigned short %s().
3927signed char value returned from unsigned int %s().
3929signed char value returned from unsigned long %s().
3935short value returned from unsigned char %s().
3936short value returned from unsigned short %s().
3938short value returned from unsigned int %s().
3940short value returned from unsigned long %s().
3957int value returned from unsigned char %s().
3959int value returned from unsigned short %s().
3960int value returned from unsigned int %s().
3962int value returned from unsigned long %s().
3979long value returned from unsigned char %s().
3981long value returned from unsigned short %s().
3983long value returned from unsigned int %s().
3984long value returned from unsigned long %s().
4037signed char value returned from unsigned long long %s().
4039short value returned from unsigned long long %s().
4043int value returned from unsigned long long %s().
4047long value returned from unsigned long long %s().
4052long long value returned from unsigned char %s().
4054long long value returned from unsigned short %s().
4056long long value returned from unsigned int %s().
4058long long value returned from unsigned long %s().
4059long long value returned from unsigned long long %s().
[Back to Top]

Implicit Casts - Unsigned to Larger Signed

Message Message Text
3713Implicit conversion: unsigned char to short.
3715Implicit conversion: unsigned char to int.
3717Implicit conversion: unsigned char to long.
3748Implicit conversion: unsigned short to int.
3750Implicit conversion: unsigned short to long.
3772Implicit conversion: unsigned int to long.
3834Implicit conversion: unsigned char to long long.
3840Implicit conversion: unsigned short to long long.
3844Implicit conversion: unsigned int to long long.
3848Implicit conversion: unsigned long to long long.
3913unsigned char value returned from short %s().
3915unsigned char value returned from int %s().
3917unsigned char value returned from long %s().
3948unsigned short value returned from int %s().
3950unsigned short value returned from long %s().
3972unsigned int value returned from long %s().
4034unsigned char value returned from long long %s().
4040unsigned short value returned from long long %s().
4044unsigned int value returned from long long %s().
4048unsigned long value returned from long long %s().
[Back to Top]

Implicit Casts - Unsigned to Signed

Message Message Text
3712Implicit conversion: unsigned char to signed char.
3745Implicit conversion: unsigned short to signed char.
3747Implicit conversion: unsigned short to short.
3767Implicit conversion: unsigned int to signed char.
3769Implicit conversion: unsigned int to short.
3771Implicit conversion: unsigned int to int.
3789Implicit conversion: unsigned long to signed char.
3791Implicit conversion: unsigned long to short.
3793Implicit conversion: unsigned long to int.
3795Implicit conversion: unsigned long to long.
3864Implicit conversion: unsigned long long to signed char.
3866Implicit conversion: unsigned long long to short.
3868Implicit conversion: unsigned long long to int.
3870Implicit conversion: unsigned long long to long.
3872Implicit conversion: unsigned long long to long long.
3912unsigned char value returned from signed char %s().
3945unsigned short value returned from signed char %s().
3947unsigned short value returned from short %s().
3967unsigned int value returned from signed char %s().
3969unsigned int value returned from short %s().
3971unsigned int value returned from int %s().
3989unsigned long value returned from signed char %s().
3991unsigned long value returned from short %s().
3993unsigned long value returned from int %s().
3995unsigned long value returned from long %s().
4064unsigned long long value returned from signed char %s().
4066unsigned long long value returned from short %s().
4068unsigned long long value returned from int %s().
4070unsigned long long value returned from long %s().
4072unsigned long long value returned from long long %s().
[Back to Top]

Includes

Message Message Text
0287[I] Header name contains character which is not a member of the basic source character set.
0813[U] Using any of the characters ' " or /* in '#include <%s>' gives undefined behaviour.
0814[U] Using the characters ' or /* in '#include "%s"' gives undefined behaviour.
0815[L] #include <...> file name does not conform strictly to ISO:C90.
0816[L] #include "..." file name does not conform strictly to ISO:C90.
0831[E] Use of '\\' in this '#include' line is a PC extension - this usage is non-portable.
0832Macro substitution in #include preprocessing directive.
0838File '%1s' has already been included directly from within file '%2s'.
0839File '%1s' has already been included indirectly from within file '%2s'.
0843/ character used in an include file name.
0861This #include <%s> directive is redundant.
0862This #include "%s" directive is redundant.
0868An absolute path has been specified in a #include statement.
[Back to Top]

Indentation

Message Message Text
2200Indentation of this line is to the left of the line above.
2201This indentation is not consistent with previous indentation in this file.
2204'%s' is not aligned to match its controlling 'switch' statement.
2205More than one declaration or statement on the same line.
2210Tab character encountered in this line.
2211'%s' is not aligned with the previously declared identifier.
2216More than one structure or union member declared on the same line.
[Back to Top]

Invariant Logical Operations

Message Message Text
3355The result of this logical operation is always 'true'.
3356The result of this logical operation is always 'false'.
[Back to Top]

K&R Restrictions

Message Message Text
0340Using the '#error' preprocessing directive.
0341Using the stringify operator '#'.
0342Using the glue operator '##'.
0343Using string literal concatenation.
0344Using function prototype syntax.
0345Using the keyword 'void'.
0346Using one of the keywords 'signed', 'const' or 'volatile'.
0347Using 'extern' in the definition of a global variable.
0348Using a bit-field.
0349Using the unary '+' operator.
0350Using the keyword 'enum'.
0351Using an initializer when defining an automatic object of struct, union or array type.
0352Using the '#elif' preprocessing directive.
3600Using the unary '+' operator.
3601Trigraphs (??x) are an ISO feature.
3602Using one of the keywords 'signed', 'const', 'volatile' or 'enum'.
3603Using 'extern' in the definition of a global variable.
3604Using an initializer when defining an automatic object of struct, union or array type.
3605Type of 'switch' controlling expression cannot be represented in type 'int'.
3606This unsuffixed decimal constant has type 'long', but had type 'unsigned int' in K&R C.
3608Using the '#elif' preprocessing directive.
3609Using the alert escape sequence '\\a'.
3610Hexadecimal escape sequence used.
3613Some pre-ISO compilers would treat this 8 or 9 as an octal digit.
3615Using 'entry' as an identifier.
3617Assignment of a struct/union by value.
3621A bit-field is being defined as a member of a struct or union.
[Back to Top]

Language Extension

Message Message Text
1003[E] '#%s' is a language extension for in-line assembler. All statements located between #asm and #endasm will be ignored.
1006[E] This in-line assembler construct is a language extension. The code has been ignored.
1011[C99] Use of '//' comment.
1015[E] '%s' is not a legal keyword in ISO C - this will be treated as a language extension.
1018[C99] Use of LL suffix.
1019[E] '@ address' is not supported in ISO C - this will be treated as a language extension.
1026[E] The indicated @word construct has been ignored.
1027[C99] Use of type 'long long'.
1028[E] Use of the sizeof operator in a preprocessing directive is a language extension.
1029[E] Whitespace encountered between backslash and new-line has been ignored.
1030[C99] Macro defined with variable argument list.
1031[C99] Initializer for 'struct', 'union' or array type is not a constant expression.
1034[E] Macro defined with named variable argument list. This is a language extension.
1035[E] No macro arguments supplied for variable argument list. This is a language extension.
1036[E] Comma before ## ignored in expansion of variadic macro. This is a language extension.
1038[E] The sequence ", ##__VA_ARGS__" is a language extension.
1042[E] Using I64 or UI64 as an integer constant suffix. This is a language extension.
1043[E] Defining an anonymous union object. This is a language extension.
1044[E] Defining an anonymous struct object. This is a language extension.
1045[E] Use of the #include_next preprocessing directive is a language extension.
1046[E] Function is being declared with default argument syntax. This is a language extension.
3006This function contains a mixture of in-line assembler statements and C statements.
[Back to Top]

Library

Message Message Text
0160[U] Using unsupported conversion specifier number %s.
0161[U] Unknown length modifier used with 'i' or 'd' conversion specifier, number %s.
0162[U] Unknown length modifier used with 'o' conversion specifier, number %s.
0163[U] Unknown length modifier used with 'u' conversion specifier, number %s.
0164[U] Unknown length modifier used with 'x' conversion specifier, number %s.
0165[U] Unknown length modifier used with 'X' conversion specifier, number %s.
0166[U] Unknown length modifier used with 'f' conversion specifier, number %s.
0167[U] Unknown length modifier used with 'e' conversion specifier, number %s.
0168[U] Unknown length modifier used with 'E' conversion specifier, number %s.
0169[U] Unknown length modifier used with 'g' conversion specifier, number %s.
0170[U] Unknown length modifier used with 'G' conversion specifier, number %s.
0171[U] Unknown length modifier used with 'c' conversion specifier, number %s.
0172[U] Unknown length modifier used with '%%' conversion specifier, number %s.
0173[U] Unknown length modifier used with 's' conversion specifier, number %s.
0174[U] Unknown length modifier used with 'n' conversion specifier, number %s.
0175[U] Unknown length modifier used with 'p' conversion specifier, number %s.
0176[U] Incomplete conversion specifier, number %s.
0177[U] Field width of format conversion specifier exceeds 509 characters.
0178[U] Precision of format conversion specifier exceeds 509 characters.
0179[U] Argument type does not match conversion specifier number %s.
0184[U] Insufficient arguments to satisfy conversion specifier, number %s.
0185[U] Call contains more arguments than conversion specifiers.
0186[U] A call to this function must include at least one argument.
0190[U] Using unsupported conversion specifier number %s.
0191[U] Unknown length modifier used with 'd/i/n' conversion specifier, number %s.
0192[U] Unknown length modifier used with 'o' conversion specifier, number %s.
0193[U] Unknown length modifier used with 'u' conversion specifier, number %s.
0194[U] Unknown length modifier used with 'x/X' conversion specifier, number %s.
0195[U] Unknown length modifier used with 'e/E/f/F/g/G' conversion specifier, number %s.
0196[U] Unknown length modifier used with 's' conversion specifier, number %s.
0197[U] Unknown length modifier used with 'p' conversion specifier, number %s.
0198[U] Unknown length modifier used with '%%' conversion specifier, number %s.
0199[U] Unknown length modifier used with '[' conversion specifier, number %s.
0200[U] Unknown length modifier used with 'c' conversion specifier, number %s.
0201[U] Incomplete conversion specifier, number %s.
0202[I] '-' character in '[]' conversion specification is implementation defined.
0203[U] Value of character prior to '-' in '[]' is greater than following character.
0204[U] Field width of format conversion specifier exceeds 509 characters.
0206[U] Argument type does not match conversion specifier number %s.
0207[U] 'scanf' expects address of objects being stored into.
0208[U] Same character occurs in scanset more than once.
0235[U] Unknown escape sequence.
0695Type given in sizeof is not compatible with the pointed to type used to cast malloc.
0696The size of the allocated memory block is smaller than the size of the object type addressed by the pointer cast.
0697The size of the allocated memory block is not an integral multiple of the size of the object type addressed by the pointer cast.
[Back to Top]

Linkage

Message Message Text
0625[U] '%s' has been declared with both internal and external linkage - the behaviour is undefined.
3224This identifier has previously been declared with internal linkage but is not declared here with the static storage class specifier.
3334This declaration of '%s' hides a more global declaration.
[Back to Top]

Macro Definitions

Message Message Text
3409The replacement list of function-like macro '%s' is not enclosed in ().
3410Macro parameter not enclosed in ().
3411Macro defined with unbalanced brackets, parentheses or braces.
3412Macro defines an unrecognized code-fragment.
3413Macro definition could be replaced by a typedef.
3414Macro defines a storage-class or function specifier keyword.
3428Macro defines a type qualifier keyword.
3429A function-like macro is being defined.
3431Macro defines an operator, a punctuator or a control statement keyword.
3435Parameter '%s' occurs more than once in the replacement list of this macro.
3439Macro redefines a keyword.
3443Macro '%s' has a replacement list which appears recursive.
3452The replacement list of object-like macro '%s' is not enclosed in ().
3453A function could probably be used instead of this function-like macro.
3456Parameter '%s' will be evaluated more than once when this macro is used.
3457Macro defines a braced initializer.
3458Macro defines a braced code statement block.
3459Macro defines a 'do-while-zero' construct.
3460Macro defines a type specifier keyword.
3461Macro defines a storage-class specifier/type qualifier sequence.
[Back to Top]

Macro Usage

Message Message Text
0834[C] Function-like macro '%s()' is being redefined as an object-like macro.
0835[C] Macro '%s' is being redefined with different parameter names.
0836[U] Definition of macro named 'defined'.
0837[U] Use of '#undef' to remove the operator 'defined'.
0841Using '#undef'.
0842Using #define or #undef inside a function.
0844[C] Macro '%s' is being redefined with a different replacement list.
0845[C] Object-like macro '%s' is being redefined as a function-like macro.
0848[U] Attempting to #undef '%s', which is a predefined macro name.
0850[C99] Macro argument is empty.
0853[U] Macro arguments contain a sequence of tokens that has the form of a preprocessing directive.
0854[U] Attempting to #define '%s', which is a predefined macro name.
0856[C] Fewer arguments in macro call than specified in definition.
0889#undef refers to a macro that has previously been #undef'd.
3332The macro '%s' used in this '#if' or '#elif' expression is not defined.
3430Macro argument expression may require parentheses.
3436Macro definition hides previously declared identifier.
3437[u] The assert macro has been suppressed to call a function of that name.
3438[U] #undef'ing the assert macro to call a function of that name causes undefined behaviour.
3454Macro argument contains an increment, decrement or assignment operator.
3455Macro argument contains a function call.
3614Macro '%s' is being defined more than once without using #undef to remove the previous definition.
[Back to Top]

Null Statements

Message Message Text
3109Null statement follows other code on the same line.
3138Null statement is located close to other code or comments.
3139Null statement is obscured by code or comment on the same line.
3140Null statement occurs on a line by itself.
3141Null statement does not occur on a line by itself.
[Back to Top]

Operator Precedence

Message Message Text
3389Extra parentheses recommended to clarify the ordering of a % operator and another arithmetic operator (* / % + -).
3390Expression is equivalent to: "%s"
3391Extra parentheses recommended. A conditional operation is the operand of another conditional operator.
3392Extra parentheses recommended. A shift, relational or equality operation is the operand of a second identical operator.
3393Extra parentheses recommended. An arithmetic operation (* / + -) is the operand of a different operator with the same precedence.
3394Extra parentheses recommended. A shift, relational or equality operation is the operand of a different operator with the same precedence.
3395Extra parentheses recommended. A * or / operation is the operand of a + or - operator.
3396Extra parentheses recommended. A binary operation is the operand of a conditional operator.
3397Extra parentheses recommended. A binary operation is the operand of a binary operator with different precedence.
3398Extra parentheses recommended. A function call, array subscript, or member operation is the operand of a logical && or ||.
3399Extra parentheses recommended. A unary operation is the operand of a logical && or ||.
3400Extra parentheses recommended. A binary operation is the operand of a logical && or ||.
[Back to Top]

Operator Usage

Message Message Text
0490Relational operator used to compare two pointers.
0491Array subscripting applied to an object of pointer type.
0492Array subscripting applied to a function parameter declared as a pointer.
0499Right operand of shift operator is greater than or equal to the width of the essential type of the left operand.
0500[U] Right operand of shift operator is negative - this is undefined.
0501[U] Right operand of shift operator is too large - this is undefined.
0502A right shift on signed data may be an arithmetic or a logical shift.
0702Result of sizeof operator is not explicitly cast.
3101Unary '-' applied to an operand of type unsigned int or unsigned long gives an unsigned result.
3102Unary '-' applied to an operand whose underlying type is unsigned.
3103Result of signed division or remainder operation may be implementation defined.
3226The result of an assignment is being used in an arithmetic operation or another assigning operation.
3322Operand of a logical ! operator is a constant expression which is not a 'Boolean' value.
3341Comparing floating point expressions for equality (with '==' or '!=').
3343Logical NOT being performed on one operand of a comparison.
3371Definite truncation of bits in an unsigned left shift operation.
3372Definite wraparound past zero in an unsigned arithmetic operation.
3377Operand of a logical && or || operator is a constant expression which is not a 'Boolean' value.
3381Apparent truncation of bits in an unsigned left shift operation.
3382Apparent wraparound past zero in an unsigned arithmetic operation.
3407String literal compared using a relational or equality operator.
3417The comma operator has been used outside a 'for' statement.
3418The comma operator has been used in a 'for' statement.
3424Statement contains a redundant & or | at top level.
3440Using the value resulting from a ++ or -- operation.
3501Absence of space between assignment operator and following unary operator may cause confusion.
3611Non-portable comparison of plain 'char' with negative constant.
3612Nonportable comparison of plain 'char' with zero.
4101Both operands of & operator are 'Boolean' expressions.
4102Both operands of | operator are 'Boolean' expressions.
4103Both operands of arithmetic or bitwise operator are 'Boolean' expressions.
4104Left hand operand of arithmetic or bitwise operator is a 'Boolean' expression.
4105Right hand operand of arithmetic or bitwise operator is a 'Boolean' expression.
4106Both operands of && operator are arithmetic or bitwise expressions.
4107Both operands of || operator are arithmetic or bitwise expressions.
4108Left hand operand of logical operator is an arithmetic or bitwise expression.
4109Right hand operand of logical operator is an arithmetic or bitwise expression.
4110Operand of ! operator is an arithmetic or bitwise expression.
4111Right hand operand of relational operator is a 'Boolean' expression.
4112Left hand operand of relational operator is a 'Boolean' expression.
4113Both operands of relational operator are 'Boolean' expressions.
4114Operand of ~ operator is a 'Boolean' expression.
4130Bitwise operations on signed data will give implementation defined results.
4131Left shift operation on signed operand.
[Back to Top]

Pointer Conversions

Message Message Text
0303[I] Cast between a pointer to volatile object and an integral type.
0305[I] Cast between a pointer to function and an integral type.
0306[I] Cast between a pointer to object and an integral type.
0307[u] Cast between a pointer to object and a pointer to function.
0308Non-portable cast involving pointer to an incomplete type.
0309[U] Integral type is not large enough to hold a pointer value.
0310Casting to different object pointer type.
0311Dangerous pointer cast results in loss of const qualification.
0312Dangerous pointer cast results in loss of volatile qualification.
0313Casting to different function pointer type.
0314[I] Cast from a pointer to object type to a pointer to void.
0315[I] Implicit conversion from a pointer to object type to a pointer to void.
0316[I] Cast from a pointer to void to a pointer to object type.
0317[I] Implicit conversion from a pointer to void to a pointer to object type.
0431[C] Function argument points to a more heavily qualified type.
0432[C] Function argument is not of compatible pointer type.
0487[C] If two pointers are subtracted, they must be pointers that address compatible types.
0562[C] Right operand of assignment points to a more heavily qualified type.
0563[C] Right operand of assignment is not of compatible pointer type.
0673[C] Initializer points to a more heavily qualified type.
0757[C] 'return' expression points to a more heavily qualified type.
3305Pointer cast to stricter alignment.
3313No definition has been found for structure/union tag '%s'.
[Back to Top]

Pointer Usage

Message Message Text
0488Performing pointer arithmetic.
0489The integer value 1 is being added or subtracted from a pointer.
0490Relational operator used to compare two pointers.
0491Array subscripting applied to an object of pointer type.
0492Array subscripting applied to a function parameter declared as a pointer.
0503[U] Dereference of constant NULL pointer.
0504[U] Definite dereference of NULL pointer.
0505[U] Apparent dereference of NULL pointer.
0506Possible dereference of NULL pointer.
0507[u] Arithmetic operation on constant NULL pointer.
0508[u] Definite arithmetic operation on NULL pointer.
0509[u] Apparent arithmetic operation on NULL pointer.
0510Possible arithmetic operation on NULL pointer.
3216Address of local static object exported to a pointer with linkage or wider scope.
3217Address of automatic object exported to a pointer with linkage or wider scope.
3225Address of automatic object exported using a function parameter.
3230Address of automatic object assigned to local pointer with static storage duration.
3671Function called via pointer to function.
3672Using non-const pointer to function.
4140Address of automatic object exported in function return value.
[Back to Top]

Preprocessor

Message Message Text
0830[E] Unrecognized text encountered after a preprocessing directive.
0841Using '#undef'.
0864[U] '#line' directive specifies line number which is not in the range 1 to 32767.
0865[U] '#line' directive is badly formed.
0867[U] '#line' has not been followed by a line number.
0872[U] Result of '##' operator is not a legal preprocessing token.
0879[S] Illegal operator in '#if' or '#elif' expression.
0880Using # and ## operators in the same macro definition.
0881Using multiple ## operators in the same macro definition.
0884Using multiple # operators in the same macro definition.
0885[U] The token 'defined' is generated in the expansion of this macro.
0887[U] Use of 'defined' must match either 'defined(identifier)' or 'defined identifier'.
0888[U] 'defined' requires an identifier as an argument.
0889#undef refers to a macro that has previously been #undef'd.
0890#ifdef refers to a macro that has been #undef'd in a previous #if block.
0891#ifdef refers to a macro that has been #undef'd previously.
0897[S] Missing operator in '#if' or '#elif' expression.
1690Null preprocessing directive used.
1691Null preprocessing directive used in an excluded section of code.
3104[S] #pragma '%s' has invalid arguments and has been ignored.
3115Unrecognized preprocessing directive has been ignored because of conditional inclusion directives.
3116Unrecognized #pragma arguments '%s' This #pragma directive has been ignored.
3117Expected 'on' or 'off' after '#pragma' flag.
3118Using the #line preprocessing directive.
3616Character constants may have different values in preprocessor arithmetic than in actual code.
[Back to Top]

Redundant Constructs

Message Message Text
3195The function parameter '%s' is always modified before use.
3196The variable '%s' is never set.
3197This initialization is redundant. The value of '%s' is never used before being modified.
3198This assignment is redundant. The value of '%s' is never used before being modified.
3199This assignment is redundant. The value of '%s' is never subsequently used.
3203The variable '%s' is set but never used.
3205The identifier '%s' is not used and could be removed.
3206The parameter '%s' is not used in this function.
3207File scope static, '%s', is not used, and could be removed.
3210The global identifier '%s' is declared here but is not used in this translation unit.
3212This cast is redundant.
3219Static function '%s()' is not used within this translation unit.
3307The operand of 'sizeof' is an expression with implied side effects, but they will not be evaluated.
3308'static %s()' has been declared but no definition has been provided. This is redundant.
3404Statement contains a redundant * operator at top level. *p++ means *(p++) not (*p)++.
3422Statement contains a redundant operator at top level.
3423Statement contains a redundant cast at top level.
3470The operand of 'sizeof' is not an expression which designates either an object or a type.
3892The result of this cast is implicitly converted to another type.
[Back to Top]

Variable Scope

Message Message Text
3216Address of local static object exported to a pointer with linkage or wider scope.
3217Address of automatic object exported to a pointer with linkage or wider scope.
3225Address of automatic object exported using a function parameter.
3230Address of automatic object assigned to local pointer with static storage duration.
3231Address of local static object exported using a function parameter.
4139Address of local static object exported in function return value.
4140Address of automatic object exported in function return value.
[Back to Top]

Side-Effects

Message Message Text
3110The left-hand operand of this ',' has no side effects.
3112This statement has no side-effect - it can be removed.
3226The result of an assignment is being used in an arithmetic operation or another assigning operation.
3326The result of an assignment is being used in a logical operation.
3345Statement contains more than one access to objects that are volatile.
3415Right hand operand of '&&' or '||' is an expression with possible side effects.
3416Logical operation performed on expression with possible side effects.
3425One branch of this conditional operation is a redundant expression.
3426Right hand side of comma expression has no side effect and its value is not used.
3427Right hand side of logical operator has no side effect and its value is not used.
3440Using the value resulting from a ++ or -- operation.
3441Function call argument is an expression with possible side effects.
3442Operator other than & (address-of) or = (assignment) applied to a volatile object.
3446The 2nd or 3rd operand of this conditional operator is an expression with possible side effects.
[Back to Top]

Signed Value Conversions

Message Message Text
0272[I] Apparent conversion of integer expression to a signed integer type which cannot represent the value.
0273[I] Definite conversion of integer expression to a signed integer type which cannot represent the value.
0274[I] Implicit conversion of integer constant expression to a signed integer type which cannot represent the value.
0280Implicit conversion of constant negative value which assumes a two's complement representation of signed values.
0281Definite use of a negative value which assumes a two's complement representation of signed values.
0282Apparent use of a negative value which assumes a two's complement implementation of signed values.
0974[I] Cast of integer constant expression to a signed integer type which cannot represent the value.
0980Cast of constant negative value which assumes a two's complement representation of signed values.
[Back to Top]

Structures and Unions

Message Message Text
0544[U] The value of an incomplete 'union' may not be used.
0547[C] This declaration of tag '%s' conflicts with a previous declaration.
0620[C] Cannot initialize '%s' because it has unknown size.
0623[U] '%s' has incomplete type and no linkage - this is undefined.
0632[U] Tentative definition of '%s' with internal linkage cannot have unknown size.
0633[E] Empty structures and unions are a language extension.
0636[U] There are no named members in this 'struct' or 'union'.
0660[E] Defining an unnamed member in a struct or union. This is a language extension.
0662[E] Accessing a member of an unnamed struct or union member in this way is a language extension.
0671[C] Initializer for object of arithmetic type is not of arithmetic type.
0672[U] The initializer for a 'struct', 'union' or array is not enclosed in braces.
0675[C] Initializer is not of compatible 'struct'/'union' type.
0693Struct initializer is missing the optional {.
0750A union type specifier has been defined.
0759An object of union type has been defined.
1041[E] Empty aggregate initializers are a language extension.
2547This declaration of tag '%s' hides a more global declaration.
3313No definition has been found for structure/union tag '%s'.
3617Assignment of a struct/union by value.
3623Passing a struct/union by value as a function argument.
3629Union contains member of floating type.
[Back to Top]

Suffixes

Message Message Text
1250Unsuffixed integer constant causes implicit conversion of other operand.
1251Suffixed integer constant causes implicit conversion of other operand.
1252Suffixed integer constant implicitly converted to different integer type.
1253Unsuffixed integer constant implicitly converted to different integer type.
1254Suffix is not consistent with a type of unsigned long.
1255Unsuffixed integer constant is not of type int.
1256An integer constant suffixed with L is being converted to type signed or unsigned long long on assignment.
1257An integer constant suffixed with L or LL is being converted to a type of lower rank on assignment.
1258Suffixed integer constant cast to a different integral type.
1259Unsuffixed integer constant cast to a different integral type.
1260Integer constant implicitly converted to a floating type.
1261Suffixed floating constant implicitly converted to different floating type.
1262Unsuffixed floating constant implicitly converted to different floating type.
1263Floating constant causes implicit conversion of other (integral) operand.
1267Suffixed floating constant cast to another type.
1268Unsuffixed floating constant cast to another type.
1269Floating constant cast to integral type.
1274Unsuffixed floating constant causes implicit conversion of other (floating) operand.
1275Suffixed floating constant causes implicit conversion of other (floating) operand.
1277Hex constant does not include a "U" suffix.
1278Decimal constant includes a suffix.
1279Hex constant includes an "L" suffix.
1280A lowercase letter L (l) has been used in an integer or floating suffix.
1281Integer literal constant is of an unsigned type but does not include a "U" suffix.
[Back to Top]

Switch Statements

Message Message Text
0570This switch case label of 'essential type' '%1s', is not consistent with a controlling expression of essential type '%2s'.
0571This switch case label of 'essential type' '%1s' is not consistent with a controlling expression which has an essential type of higher rank (%2s).
0572This switch case label of 'essential type' '%1s' is not consistent with a controlling expression which has an essential type of lower rank (%2s).
0594Negative 'case' label expression is incompatible with unsigned controlling expression in 'switch' statement.
0596Value of 'case' label expression is too large for type of controlling expression in 'switch' statement.
0597Type of 'case' label expression is not consistent with type of controlling expression in 'switch' statement.
0689[u] 'Switch' statement will bypass the initialization of this local variable.
1470Numeric constant used as 'case' label with 'switch' expression of enum type.
1472Enum constant used as 'case' label with 'switch' expression of different enum type.
2002No 'default' label found in this 'switch' statement.
2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
2008Code statements precede the first label in this 'switch' construct.
2009This 'default' label is not the final 'case' label within the 'switch' block.
2016This 'switch' statement 'default' clause is empty.
2020Final 'switch' clause does not end with an explicit 'jump' statement.
3201This statement is unreachable.
3234Declarations precede the first label in this 'switch' construct.
3309The value of the controlling expression in this 'switch' statement is constant.
3315This 'switch' statement contains only a single path - it is redundant.
3321[U] The variable '%s' is definitely unset at this point.
3333A 'break' statement has been used in the middle of a 'switch' 'case'/'default' clause.
3352This 'switch' statement contains only two execution paths.
3605Type of 'switch' controlling expression cannot be represented in type 'int'.
[Back to Top]

Type Qualifiers

Message Message Text
0311Dangerous pointer cast results in loss of const qualification.
0312Dangerous pointer cast results in loss of volatile qualification.
0431[C] Function argument points to a more heavily qualified type.
0562[C] Right operand of assignment points to a more heavily qualified type.
0563[C] Right operand of assignment is not of compatible pointer type.
0673[C] Initializer points to a more heavily qualified type.
0752String literal passed as argument to function whose parameter is not a 'pointer to const'.
0753String literal assigned to pointer which is not a 'pointer to const'.
0757[C] 'return' expression points to a more heavily qualified type.
3203The variable '%s' is set but never used.
3204The variable '%s' is only set once and so it could be declared with the 'const' qualifier.
3205The identifier '%s' is not used and could be removed.
3206The parameter '%s' is not used in this function.
3227The parameter '%s' is never modified and so it could be declared with the 'const' qualifier.
3673The object addressed by the pointer parameter '%s' is not modified and so the pointer could be of type 'pointer to const'.
[Back to Top]

Unrepresentable Values

Message Message Text
0271[U] Left shift operation on constant signed expression generating an undefined value.
0278[C] Overflow in signed arithmetic operation on constant operands.
0294[U] Definite signed left shift operation generating an undefined value.
0295[U] Apparent signed left shift operation generating an undefined value.
0296[U] Definite overflow in signed arithmetic operation.
0297[U] Apparent overflow in signed arithmetic operation.
0580[C] Constant is too large to be representable.
0584Possible division by zero.
0585[U] Apparent division by zero.
0586[U] Division by constant zero.
0587[U] Definite division by zero.
[Back to Top]

Unset Variables

Message Message Text
3196The variable '%s' is never set.
3321[U] The variable '%s' is definitely unset at this point.
3347[U] The variable '%s' is apparently unset at this point.
3348Definite use of unset pointer as an argument to a function which expects a read-only pointer.
3349Apparent use of unset pointer as an argument to a function which expects a read-only pointer.
3353The variable '%s' is possibly unset at this point.
3354Possible use of unset pointer as an argument to a function which expects a read-only pointer.
[Back to Top]

Unsigned Value Conversions

Message Message Text
0277Implicit conversion of a constant negative value to an unsigned type.
0290Definite conversion of a negative value to an unsigned type.
0291Apparent conversion of a negative value to an unsigned type.
0977Cast of a constant negative value to an unsigned type.
3290Truncation of positive constant integer value during cast to a smaller unsigned type.
3296Definite truncation of positive integer value during implicit conversion to a smaller unsigned type.
3297Apparent truncation of positive integer value during implicit conversion to a smaller unsigned type.
3306Truncation of positive constant integer value during implicit conversion to a smaller unsigned type.
[Back to Top]

Widening Conversions

Message Message Text
4117Result of integer division operation implicitly converted to a floating type.
[Back to Top]

QA·C Source Code Analyser 8.1.2
© 2013 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index Contents