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