Rule 11.1, 11.2 (and others?) vs conversion caused by equality operators (and similar)? - Printable Version +- MISRA Discussion Forums (https://forum.misra.org.uk) +-- Forum: MISRA C (https://forum.misra.org.uk/forumdisplay.php?fid=4) +--- Forum: MISRA C:2012 and MISRA C:2023 guidelines (https://forum.misra.org.uk/forumdisplay.php?fid=21) +---- Forum: 8.11 Pointer type conversions (https://forum.misra.org.uk/forumdisplay.php?fid=166) +---- Thread: Rule 11.1, 11.2 (and others?) vs conversion caused by equality operators (and similar)? (/showthread.php?tid=1184) |
Rule 11.1, 11.2 (and others?) vs conversion caused by equality operators (and similar)? - pkruk - 03-06-2015 Hello, rules 11.1 and 11.2 disallow conversions between pointer to a function or incomplete type, and any other type: Code: void (*fp1)(short); What if the conversion happens for example in equality operator: Code: fp2 == fp1; /* Compliant or Not-compliant ? */ Following example from Rule 11.1 suggests it's also non-compliant: Code: if ( fp2 != NULL ) /* Compliant - exception 1 (NULL) */ Re: Rule 11.1, 11.2 (and others?) vs conversion caused by equality operators (and similar)? - misra-c - 25-06-2015 The rules in section 11 cover the implicit and explicit conversions that are permitted by the C standard. It does not matter whether these conversions occurring in an assigning context ( fp2 = fp1 ) or a balancing context ( fp2 == fp1 ). Therefore the compliance of your examples are as follows: Code: fp2 == fp1; /* Not-compliant */ |