Как я могу проверить размер unsigned
в препроцессоре под g ++? sizeof
вне рассмотрения, так как это не определяется когда во время предварительной обработки.
Возможно, это не самый элегантный метод, но одна вещь, которую вы можете использовать, это UINT_MAX, определенный в "limits.h". То есть, ...
если UINT_MAX == 65535, то вы будете знать, что sizeof (unsigned) = 2
если UINT_MAX == 4294967295, то вы будете знать, что sizeof (unsigned) = 4.
и так далее.
Как я уже сказал, это не элегантно, но должно обеспечить некоторый уровень удобства использования.
Надеюсь, это поможет.
Основываясь на ответе Спарки, вот способ, который выглядел бы немного лучше (за счет исключения явных чисел)
#include <limits.h>
#include <stdint.h>
//Check if size if 4bytes
#if UINT_MAX == UINT32_MAX
....
#endif
определяет INT_MAX
и
определяет UINT32_MAX
. Обычно
дает целочисленные типы с заданной шириной.