Рекомендуемое решение - сделать ваше приложение более предсказуемым. Если вы сделаете это зависимым от размера указателя памяти, у вас могут возникнуть некоторые нежелательные сюрпризы. Printf понимает только несколько типов, если вы должны напечатать значение для типа, который не всегда может гарантировать, что он действительно известен, гораздо лучше преобразовать его во что-то известное.
printf("Some message with %ld in the middle of it\n", (long) d);
Это хороший совет, действительный для любого типа. Например, чтобы напечатать PID Unix (типа pid_t):
pid_t pid = fork();
printf("Fork returned %d.\n", (int) pid);
Вам не нужно знать тип и размер pid, если целевой тип достаточно велик.