Uint64_t - проверить его существование - C (СИ)
Формулировка задачи:
Вопрос в следующем. Стандарт С99 не обязывает реализовывать типы с точным размером (напр. int8_t или uint64_t), вопрос, как на этапе компиляции отловить ошибку отсутствия данных типов, если такое случится (к-нить хитрый компилер для хитрого железа)?
Эта конструкция не прокатит, как и ожидалось
#include <stdint.h> typedef uint64_t dword; #ifndef uint64_t #error "Oblom! ha-ha" #endif
clang -I./ 1.c In file included from 1.c:2: ./sm_hash.h:9:2: error: "Oblom! ha-ha" #error "Oblom! ha-ha" ^ 1 error generated.
Решение задачи: «Uint64_t - проверить его существование»
textual
Листинг программы
/* Minimum of signed integral types. */ # define INT8_MIN (-128) # define INT16_MIN (-32767-1) # define INT32_MIN (-2147483647-1) # define INT64_MIN (-__INT64_C(9223372036854775807)-1) /* Maximum of signed integral types. */ # define INT8_MAX (127) # define INT16_MAX (32767) # define INT32_MAX (2147483647) # define INT64_MAX (__INT64_C(9223372036854775807)) /* Maximum of unsigned integral types. */ # define UINT8_MAX (255) # define UINT16_MAX (65535) # define UINT32_MAX (4294967295U) # define UINT64_MAX (__UINT64_C(18446744073709551615))
Объяснение кода листинга программы
В представленном коде реализуется определение максимального и минимального значений для различных типов данных. Список значений:
- INT8_MIN: -128
- INT16_MIN: -32767 - 1
- INT32_MIN: -2147483647 - 1
- INT64_MIN: -9223372036854775807 - 1
- INT8_MAX: 127
- INT16_MAX: 32767
- INT32_MAX: 2147483647
- INT64_MAX: 9223372036854775807
- UINT8_MAX: 255
- UINT16_MAX: 65535
- UINT32_MAX: 4294967295
- UINT64_MAX: 18446744073709551615
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д