[previous] 0542 [next] [C] Controlling expression must have scalar (arithmetic or pointer) type.
Constraint violations REFERENCE - ISO:C90-6.6.4.1 The if Statement - Constraints, ISO:C90-6.6.5 Iteration Statements - Constraints

This is a constraint error

The controlling expression of this if, while, do while or for statement is not of scalar type. An expression of void, struct, union or array type is not permitted. For example:


/*PRQA S 2213,2216,3408,3416,3447 ++*/

struct ST {int a; int b;};

extern struct ST stx;

void bar(void);

void foo(void)
{
    if (stx)     /* Message 0542 and also 3344          */
    {
    }

    if (bar())   /* Message 0542 and also 0543 and 3344 */
    {
    }
}


MISRA-C:2004 Rules applicable to message 0542:

Rule  1.1  (Required) All code shall conform to ISO/IEC 9899:1990 C programming language, ISO 9899, amended and corrected by ISO/IEC 9899/COR1:1995, ISO/IEC 9899/AMD1:1995, and ISO/IEC 9899/COR2: 1996192


See also:

QA·C Source Code Analyser 8.1
MISRA-C:2004 Compliance Module 3.2
© 2012 Programming Research.
www.programmingresearch.com
Personality Groups | Glossary | Message Index | MISRA-C:2004 Rule Index Contents