Если реализация не предоставляет используемый вами тип, он не будет существовать и ваш код не будет компилироваться. В этом случае потребуется ручное портирование.
Относительно вашего второго вопроса: хотя мы знаем, что sizeof(char) == 1
, не гарантируется, что char
имеет ровно восемь битов; это может иметь больше, чем это. Если это так int8_t
и друзей не будет.
Обратите внимание, что существуют другие типы, которые могут предоставить достаточные гарантии для вашего варианта использования, если вам не нужно знать точную ширину, например int_least8_t
или int_fast8_t
. Те оставляют реализацию немного больше свободы, делая их более портативными.
Однако, если вы нацеливаетесь на платформу, на которой не существует общих целочисленных типов, вы должны знать об этом заранее; так что не стоит тратить слишком много времени на решение наиболее вероятных не относящихся к делу проблем. Эти платформы относительно экзотичны.