1+ #include <stdbool.h>
2+ #include <string.h>
3+
4+ void testMemcmpSignedInt (signed int * p , signed int * q , size_t size ) {
5+ memcmp (p , q , size ); // COMPLIANT
6+ }
7+
8+ void testMemcmpUnsignedInt (unsigned int * p , unsigned int * q , size_t size ) {
9+ memcmp (p , q , size ); // COMPLIANT
10+ }
11+
12+ enum E1 { E1_1 , E1_2 };
13+
14+ void testMemcmpEnum (enum E1 * p , enum E1 * q , size_t size ) {
15+ memcmp (p , q , size ); // COMPLIANT
16+ }
17+
18+ void testMemcmpBool (bool * p , bool * q , size_t size ) {
19+ memcmp (p , q , size ); // COMPLIANT
20+ }
21+
22+ void testMemcmpFloat (float * p , float * q , size_t size ) {
23+ memcmp (p , q , size ); // NON_COMPLIANT
24+ }
25+
26+ void testMemcmpPointerToPointer (void * * p , void * * q , size_t size ) {
27+ memcmp (p , q , size ); // COMPLIANT
28+ }
29+
30+ struct S1 {
31+ int i ;
32+ };
33+
34+ void testMemcmpStruct (struct S1 * p , struct S1 * q , size_t size ) {
35+ memcmp (p , q , size ); // NON_COMPLIANT
36+ }
37+
38+ union U ;
39+
40+ void testMemcmpUnion (union U * p , union U * q , size_t size ) {
41+ memcmp (p , q , size ); // NON_COMPLIANT
42+ }
43+
44+ void testMemcmpChar (char * p , char * q , size_t size ) {
45+ memcmp (p , q , size ); // NON_COMPLIANT
46+ }
47+
48+ void testMemcmpCharArray (char p [10 ], char q [10 ], size_t size ) {
49+ memcmp (p , q , size ); // NON_COMPLIANT
50+ }
51+
52+ void testMemcmpIntArray (int p [10 ], int q [10 ], size_t size ) {
53+ memcmp (p , q , size ); // COMPLIANT
54+ }
0 commit comments