Home | History | Annotate | Line # | Download | only in lint1
msg_116.c revision 1.3
      1 /*	$NetBSD: msg_116.c,v 1.3 2021/01/09 22:55:36 rillig Exp $	*/
      2 # 3 "msg_116.c"
      3 
      4 // Test for message: illegal pointer subtraction [116]
      5 
      6 /*
      7  * Subtracting an int pointer from a double pointer does not make sense.
      8  * The result cannot be reasonably defined since it is "the difference of
      9  * the subscripts of the two array elements" (C99 6.5.5p9), and these two
     10  * pointers cannot point to the same array.
     11  */
     12 _Bool
     13 example(int *a, double *b)
     14 {
     15 	return a - b > 0;
     16 }
     17 
     18 /*
     19  * Even though signed char and unsigned char have the same size,
     20  * their pointer types are still considered incompatible.
     21  *
     22  * C99 6.5.5p9
     23  */
     24 _Bool
     25 subtract_character_pointers(signed char *scp, unsigned char *ucp)
     26 {
     27 	return scp - ucp > 0;
     28 }
     29 
     30 _Bool
     31 subtract_const_pointer(const char *ccp, char *cp)
     32 {
     33 	return ccp - cp > 0;
     34 }
     35