Level 3: Major

Arithmetic type - Assignment

MessageMessage Text
1296 An integer constant of 'essentially signed' type is being converted to enum type on assignment.
1297 An integer constant of 'essentially unsigned' type is being converted to enum type on assignment.
4401 An expression of 'essentially Boolean' type (%1s) is being converted to character type, '%2s' on assignment.
4402 An expression of 'essentially Boolean' type (%1s) is being converted to enum type, '%2s' on assignment.
4403 An expression of 'essentially Boolean' type (%1s) is being converted to signed type, '%2s' on assignment.
4404 An expression of 'essentially Boolean' type (%1s) is being converted to unsigned type, '%2s' on assignment.
4405 An expression of 'essentially Boolean' type (%1s) is being converted to floating type, '%2s' on assignment.
4410 An expression of 'essentially character' type (%1s) is being converted to Boolean type, '%2s' on assignment.
4412 An expression of 'essentially character' type (%1s) is being converted to enum type, '%2s' on assignment.
4415 An expression of 'essentially character' type (%1s) is being converted to floating type, '%2s' on assignment.
4420 An expression of 'essentially enum' type (%1s) is being converted to Boolean type, '%2s' on assignment.
4421 An expression of 'essentially enum' type (%1s) is being converted to character type, '%2s' on assignment.
4422 An expression of 'essentially enum' type (%1s) is being converted to a different enum type, '%2s' on assignment.
4425 An expression of 'essentially enum' type (%1s) is being converted to floating type, '%2s' on assignment.
4430 An expression of 'essentially signed' type (%1s) is being converted to Boolean type, '%2s' on assignment.
4432 An expression of 'essentially signed' type (%1s) is being converted to enum type, '%2s' on assignment.
4434 A non-constant expression of 'essentially signed' type (%1s) is being converted to unsigned type, '%2s' on assignment.
4440 An expression of 'essentially unsigned' type (%1s) is being converted to Boolean type, '%2s' on assignment.
4442 An expression of 'essentially unsigned' type (%1s) is being converted to enum type, '%2s' on assignment.
4450 An expression of 'essentially floating' type (%1s) is being converted to Boolean type, '%2s' on assignment.
4451 An expression of 'essentially floating' type (%1s) is being converted to character type, '%2s' on assignment.
4452 An expression of 'essentially floating' type (%1s) is being converted to enum type, '%2s' on assignment.
4453 An expression of 'essentially floating' type (%1s) is being converted to signed type, '%2s' on assignment.
4454 An expression of 'essentially floating' type (%1s) is being converted to unsigned type, '%2s' on assignment.
4460 A non-constant expression of 'essentially signed' type (%1s) is being converted to narrower signed type, '%2s' on assignment.
4461 A non-constant expression of 'essentially unsigned' type (%1s) is being converted to narrower unsigned type, '%2s' on assignment.
4462 A non-constant expression of 'essentially floating' type (%1s) is being converted to narrower floating type, '%2s' on assignment.

Arithmetic type - Balancing

MessageMessage Text
1802 The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this relational operation.
1803 The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this equality operation.
1804 The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this conditional operation.
1810 An operand of 'essentially character' type is being added to another operand of 'essentially character' type.
1811 An operand of 'essentially character' type is being subtracted from an operand of 'essentially signed' type.
1812 An operand of 'essentially character' type is being subtracted from an operand of 'essentially unsigned' type.
1813 An operand of 'essentially character' type is being balanced with an operand of 'essentially floating' type in this arithmetic operation.
1820 The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.
1821 The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.
1822 The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this relational operation.
1823 The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this equality operation.
1824 The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this conditional operation.
1830 The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.
1831 The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.
1832 The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this relational operation.
1833 The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this equality operation.
1834 The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this conditional operation.

Arithmetic type - Casts

MessageMessage Text
4301 An expression of 'essentially Boolean' type (%1s) is being cast to character type '%2s'.
4305 An expression of 'essentially Boolean' type (%1s) is being cast to floating type '%2s'.
4310 An expression of 'essentially character' type (%1s) is being cast to Boolean type, '%2s'.
4312 An expression of 'essentially character' type (%1s) is being cast to enum type, '%2s'.
4315 An expression of 'essentially character' type (%1s) is being cast to floating type, '%2s'.
4350 An expression of 'essentially floating' type (%1s) is being cast to Boolean type '%2s'.
4351 An expression of 'essentially floating' type (%1s) is being cast to character type '%2s'.
4352 An expression of 'essentially floating' type (%1s) is being cast to enum type, '%2s'.

Arithmetic type - Operands

MessageMessage Text
3101 Unary '-' applied to an operand of type unsigned int or unsigned long gives an unsigned result.
3102 Unary '-' applied to an operand whose underlying type is unsigned.
4500 An expression of 'essentially Boolean' type (%1s) is being used as an array subscript.
4501 An expression of 'essentially Boolean' type (%1s) is being used as the %2s operand of this arithmetic operator (%3s).
4502 An expression of 'essentially Boolean' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
4503 An expression of 'essentially Boolean' type (%1s) is being used as the left-hand operand of this shift operator (%2s).
4504 An expression of 'essentially Boolean' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
4505 An expression of 'essentially Boolean' type (%1s) is being used as the %2s operand of this relational operator (%3s).
4507 An expression of 'essentially Boolean' type (%1s) is being used as the operand of this increment/decrement operator (%2s).
4510 An expression of 'essentially character' type (%1s) is being used as an array subscript.
4511 An expression of 'essentially character' type (%1s) is being used as the %2s operand of this arithmetic operator (%3s).
4512 An expression of 'essentially character' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
4513 An expression of 'essentially character' type (%1s) is being used as the left-hand operand of this shift operator (%2s).
4514 An expression of 'essentially character' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
4532 An expression of 'essentially signed' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
4533 An expression of 'essentially signed' type (%1s) is being used as the left-hand operand of this shift operator (%2s).

Arithmetic type - Operations

MessageMessage Text
0499 Right operand of shift operator is greater than or equal to the width of the essential type of the left operand.
3322 Operand of a logical ! operator is a constant expression which is not a 'Boolean' value.
3326 The result of an assignment is being used in a logical operation.
3328 An unsigned value is being compared with a negative constant - this is dangerous.
3341 Comparing floating point expressions for equality (with '==' or '!=').
3343 Logical NOT being performed on one operand of a comparison.
3377 Operand of a logical && or || operator is a constant expression which is not a 'Boolean' value.
3611 Non-portable comparison of plain 'char' with negative constant.
3612 Nonportable comparison of plain 'char' with zero.
4117 Result of integer division operation implicitly converted to a floating type.
4118 Result of integer division operation cast to a floating type.
4119 Result of floating point operation cast to an integral type.

Declarations and definitions

MessageMessage Text
0686 Array has fewer initializers than its declared size. Default initialization is applied to the remainder of the array elements.
0687 Array has been initialized using concatenated strings and has fewer initializers than its declared size.
0688 Array size determined by number of initializers which include concatenated string literals.
0703 Structure has fewer initializers than its declared size. Default initialization is applied to the remainder of the members.
1312 The array being initialized is not large enough to hold a terminating null byte for the string initializer.
1315 The 'static' qualifier has been used in the declaration of a tag.
2021 This tentative definition is interpreted as a declaration. Is this intended ?
2547 This declaration of tag '%s' hides a more global declaration.
3334 This declaration of '%s' hides a more global declaration.
3337 The array '%s[]' is defined with a single element because no size has been specified.
3405 Index[Array] is equivalent to Array[Index] but more confusing.
3406 Object/function '%s', with external linkage, has been defined in a header file.
3480 Object/function '%s', with internal linkage, has been defined in a header file.
3620 'register' may be illegal on array and 'struct' / 'union' types in some compilers.
3650 Typedef defines an array type of unknown size.
3651 Using a typedef for an array of unknown size can lead to unexpected results.

Functions

MessageMessage Text
1328 Tag type defined within a function declaration.
1331 Type or number of arguments doesn't match previous use of the function.
1332 Type or number of arguments doesn't match prototype found later.
1333 Type or number of arguments doesn't match function definition found later.
2010 The function '%s()' must not be called.
3002 Defining '%s()' with an identifier list and separate parameter declarations is an obsolescent feature.
3320 Type of argument no. %s differs from its type in definition of function.
3335 No function declaration. Implicit declaration inserted: 'extern int %s();'.
3670 Recursive call to function containing this call.

Pointers

MessageMessage Text
0311 Dangerous pointer cast results in loss of const qualification.
0312 Dangerous pointer cast results in loss of volatile qualification.
0360 An expression of pointer type is being converted to type _Bool on assignment.
0361 An expression of pointer type is being cast to type _Bool.
0362 An expression of essentially Boolean type is being cast to a pointer.
0695 Type given in sizeof is not compatible with the pointed to type used to cast malloc.
0696 The size of the allocated memory block is smaller than the size of the object type addressed by the pointer cast.
0697 The size of the allocated memory block is not an integral multiple of the size of the object type addressed by the pointer cast.
3003 This character constant is being interpreted as a NULL pointer constant.
3217 Address of automatic object exported to a pointer with linkage or wider scope.
3225 Address of automatic object exported using a function parameter.
3230 Address of automatic object assigned to local pointer with static storage duration.
3305 Pointer cast to stricter alignment.
3407 String literal compared using a relational or equality operator.
4140 Address of automatic object exported in function return value.

Preprocessing

MessageMessage Text
0855 Preprocessing results in a sequence of tokens that has the form of a preprocessing directive.
3317 '#if...' not matched by '#endif' in included file. This is probably an error.
3318 '#else'/'#elif'/'#endif' in included file matched '#if...' in parent file. This is probably an error.
3332 The macro '%s' used in this '#if' or '#elif' expression is not defined.
3436 Macro definition hides previously declared identifier.
3614 Macro '%s' is being defined more than once without using #undef to remove the previous definition.

Redundancy

MessageMessage Text
2008 Code statements precede the first label in this 'switch' construct.
3110 The left-hand operand of this ',' has no side effects.
3112 This statement has no side-effect - it can be removed.
3196 The variable '%s' is never set.
3203 The variable '%s' is set but never used.
3229 File scope static, '%s', is written but never used.
3404 Statement contains a redundant * operator at top level. *p++ means *(p++) not (*p)++.
3419 Initialization expression of 'for' statement has no side effects.
3420 Increment expression of 'for' statement has no side effects.
3422 Statement contains a redundant operator at top level.
3423 Statement contains a redundant cast at top level.
3424 Statement contains a redundant & or | at top level.
3425 One branch of this conditional operation is a redundant expression.
3426 Right hand side of comma expression has no side effect and its value is not used.
3427 Right hand side of logical operator has no side effect and its value is not used.

Switch statements

MessageMessage Text
0570 This switch case label of 'essential type' '%1s', is not consistent with a controlling expression of essential type '%2s'.
0571 This switch case label of 'essential type' '%1s' is not consistent with a controlling expression which has an essential type of higher rank (%2s).
0572 This switch case label of 'essential type' '%1s' is not consistent with a controlling expression which has an essential type of lower rank (%2s).
0594 Negative 'case' label expression is incompatible with unsigned controlling expression in 'switch' statement.
0596 Value of 'case' label expression is too large for type of controlling expression in 'switch' statement.
0735 Using relational or logical operators in a 'switch' expression is usually a programming error.
1460 'Switch' label value, %s, not contained in enum type.
1470 Numeric constant used as 'case' label with 'switch' expression of enum type.
1472 Enum constant used as 'case' label with 'switch' expression of different enum type.
2019 'Switch' label is located within a nested code block.
3234 Declarations precede the first label in this 'switch' construct.
3309 The value of the controlling expression in this 'switch' statement is constant.
3315 This 'switch' statement contains only a single path - it is redundant.
3352 This 'switch' statement contains only two execution paths.

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