![]() |
![]() |
0432 | ![]() |
||||
![]() | |||||||
| Constraint violations | REFERENCE - ISO:C90-6.3.2.2 Function calls, ISO:C90-6.3.4 | ||||||
This is a constraint error An argument of incompatible type has been passed to a function. The corresponding function parameter is declared with pointer type and the argument should point to a compatible (possibly less qualified) type. For example:
/*PRQA S 750,759,2213,2216,3132,3408,3447,3623,3625 ++ */
struct ST1 { int si; char sbuf[10];};
union UN1 { int ui; int uj;};
extern struct ST1 st1a;
extern union UN1 un1a;
extern char *pc;
extern char **ppc;
extern char gc;
extern char cbuf[10];
extern unsigned char *puc;
extern void foo(char * ptp);
void test(void)
{
foo(pc); /* OK */
foo(st1a); /* Message 0432 */
foo(un1a); /* Message 0432 */
foo(gc); /* Message 0432 */
foo(ppc); /* Message 0432 */
foo(cbuf); /* OK */
foo(puc); /* Message 0432 */
}
Note that according to ISO:C Standard 'char' and 'unsigned char' (or 'signed char') are distinct types, even though 'char' may be implemented as 'unsigned char' (or 'signed char'). For this reason message 0432 is generated for the last call to 'foo' in the example above. If your compiler incorrectly allows such a conversion, you can use QA C option -foldplainchar (compiler personality) to mimic this behaviour.
MISRA-C:2004 Rules applicable to message 0432:
| 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 |