Remix.run Logo
kazinator 6 days ago

Would you want the main function to be:

  int32_t main(int32_t argc, char **argv)?
How about struct tm?

  struct tm {$
    int32_t tm_sec;    /* Seconds (0-60) */$
    int32_t tm_min;    /* Minutes (0-59) */$
    int32_t tm_hour;   /* Hours (0-23) */$
    int32_t tm_mday;   /* Day of the month (1-31) */$
    int32_t tm_mon;    /* Month (0-11) */$
    int32_t tm_year;   /* Year - 1900 */$
    int32_t tm_wday;   /* Day of the week (0-6, Sunday = 0) */$
    int32_t tm_yday;   /* Day in the year (0-365, 1 Jan = 0) */$
    int32_t tm_isdst;  /* Daylight saving time */$
  };
What for? Or do we "shrink wrap" every field to the smallest type? "uint8_t tm_hour"?
zozbot234 6 days ago | parent [-]

You'd define architecture-specific typedefs to deal with these cases in a portable way. The C standard already has types like int_fast8_t that are similar in principle.

kazinator 6 days ago | parent [-]

See, why would you need an "architecture specific typedef" in order to represent the day of the month, or the number of arguments in main "in a portable way". int does it in a portable way already.

It's just muddled thinking.

zozbot234 6 days ago | parent [-]

int is architecture specific too, and it's been "muddled" plenty due to backward compatibility concerns. Using typedefs throughout would be a cleaner choice if we were starting from scratch.