My questions stem from trying to use printf to log things when trying to build for multiple bit-depth platforms (32/64 for example).
A problem that keeps rearing its ugl
You said:
A problem that keeps rearing its ugly head is trying to print ints on multiple architectures
Is it dangerous to try and get in front of type issues by passing in values that are not of that type size, yes. Thats why the compiler warns you. The notion of portability which seems to be causing you problems is not designed to make printf happy.
Its designed to make your program run and not crash on multiple architectures. If you have platform specific code you should use #ifdef macros to work around it.
Otherwise you are rolling the dice trying to layer over memory level type conversion.
printf is a convenience not a type conversion methodology.
It seems you are focused on ints - which you will probably get away with. But in general I would not rely on a technique like this.