MISRA Discussion Forums
Rule 11.9: Does this struct initialization violate rule 11.9? - 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.9: Does this struct initialization violate rule 11.9? (/showthread.php?tid=1371)



Rule 11.9: Does this struct initialization violate rule 11.9? - fst-mra - 27-09-2017

Dear community,

our analysis tool reports the following struct initialization to violate rule 11.9 (macro NULL is the only permitted form of integer null pointer constant):

static const myType myStruct = {
64,
{0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0,0xa0},
0
};

with:
typedef unsigned short uint16;
typedef unsigned char uint8;
typedef struct {
uint16 myVariable01;
uint8 myArray [16];
uint8 myVariable02;
} myType;

Unfortunately, neither from the tool documentation nor from the MISRA documentation we can conclude why this initialization would be non-compliant. Also we cannot see what the risk behind this deviation would be. Is this deviation false-positive? Does it introduce any portability, maintainability etc. risk?

Thanks for your support.
Frank


Re: Rule 11.9: Does this struct initialization violate rule 11.9? - dg1980 - 28-09-2017

Code:
typedef struct {
uint16 myVariable01;
uint8 myArray [16];
uint8 myVariable02;
} myType;
Since myType does not contain a pointer and NULL macro is not even used in initialization, it is a false positive IMHO.
A violation would look like this:
Code:
uint8* ptr = 0;// use NULL for pointer initialization



Re: Rule 11.9: Does this struct initialization violate rule 11.9? - misra-c - 24-10-2017

There is no null pointer constant in this example and hence no violation of rule 11.9