Annex I

(informative)

Common warnings

1

An implementation may generate warnings in many situations, none of which are specified as part of this International Standard. The following are a few of the more common situations.

2

  • A new struct or union type appears in a function prototype (6.2.1, 6.7.2.3).

  • A block with initialization of an object that has automatic storage duration is jumped into (6.2.4).

  • An implicit narrowing conversion is encountered, such as the assignment of a long int or a double to an int, or a pointer to void to a pointer to any type other than a character type (6.3).

  • A hexadecimal floating constant cannot be represented exactly in its evaluation format (6.4.4.2).

  • An integer character constant includes more than one character or a wide character constant includes more than one multibyte character (6.4.4.4).

  • The characters /* are found in a comment (6.4.7).

  • An “unordered” binary operator (not comma, &&, or ||) contains a side effect to an lvalue in one operand, and a side effect to, or an access to the value of, the identical lvalue in the other operand (6.5).

  • A function is called but no prototype has been supplied (6.5.2.2).

  • The arguments in a function call do not agree in number and type with those of the parameters in a function definition that is not a prototype (6.5.2.2).

  • An object is defined but not used (6.7).

  • A value is given to an object of an enumerated type other than by assignment of an enumeration constant that is a member of that type, or an enumeration object that has the same type, or the value of a function that returns the same enumerated type (6.7.2.2).

  • An aggregate has a partly bracketed initialization (6.7.7).

  • A statement cannot be reached (6.8).

  • A statement with no apparent effect is encountered (6.8).

  • A constant expression is used as the controlling expression of a selection statement (6.8.4).

  • An incorrectly formed preprocessing group is encountered while skipping a preprocessing group (6.10.1).

  • An unrecognized #pragma directive is encountered (6.10.6).