kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

6_5_64_unsigned_size_division.c (500B)


      1 typedef unsigned long kit_size_t;
      2 
      3 struct Node {
      4   char bytes[24];
      5 };
      6 
      7 #define MAX_SIZE_T ((kit_size_t) ~(kit_size_t)0)
      8 #define LIMIT_N(n, t)                        \
      9   ((kit_size_t)(n) <= MAX_SIZE_T / sizeof(t) \
     10        ? (n)                                 \
     11        : (unsigned int)(MAX_SIZE_T / sizeof(t)))
     12 
     13 int test_main(void) {
     14   unsigned int n = 1u << 30;
     15   unsigned int limit = LIMIT_N(n, struct Node);
     16   if (limit != n) return 10;
     17   return (MAX_SIZE_T / sizeof(struct Node)) > n ? 42 : 20;
     18 }