Проверка sizeof целый тип в препроцессоре

Как я могу проверить размер unsigned в препроцессоре под g ++? sizeof вне рассмотрения, так как это не определяется когда во время предварительной обработки.

14
задан Cœur 10 July 2018 в 13:20
поделиться

2 ответа

Возможно, это не самый элегантный метод, но одна вещь, которую вы можете использовать, это UINT_MAX, определенный в "limits.h". То есть, ...

если UINT_MAX == 65535, то вы будете знать, что sizeof (unsigned) = 2

если UINT_MAX == 4294967295, то вы будете знать, что sizeof (unsigned) = 4.

и так далее.

Как я уже сказал, это не элегантно, но должно обеспечить некоторый уровень удобства использования.

Надеюсь, это поможет.

26
ответ дан 1 December 2019 в 07:39
поделиться

Основываясь на ответе Спарки, вот способ, который выглядел бы немного лучше (за счет исключения явных чисел)

#include <limits.h>
#include <stdint.h>

//Check if size if 4bytes
#if UINT_MAX == UINT32_MAX

....

#endif

определяет INT_MAX и определяет UINT32_MAX . Обычно дает целочисленные типы с заданной шириной.

9
ответ дан 1 December 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: