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))

Объяснение кода листинга программы

В представленном коде реализуется определение максимального и минимального значений для различных типов данных. Список значений:

  1. INT8_MIN: -128
  2. INT16_MIN: -32767 - 1
  3. INT32_MIN: -2147483647 - 1
  4. INT64_MIN: -9223372036854775807 - 1
  5. INT8_MAX: 127
  6. INT16_MAX: 32767
  7. INT32_MAX: 2147483647
  8. INT64_MAX: 9223372036854775807
  9. UINT8_MAX: 255
  10. UINT16_MAX: 65535
  11. UINT32_MAX: 4294967295
  12. UINT64_MAX: 18446744073709551615

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.933 из 5
Похожие ответы