Работа с динамическими целочисленными типами в C? - PullRequest
1 голос
/ 22 февраля 2010

Я разрабатываю модуль Python на C, который анализирует очень эффективный протокол, который использует динамические целочисленные размеры. Целые числа, отправленные с использованием этого протокола, могут варьироваться по размеру от эквивалента «короткого» C до «длинного long».

В протоколе есть байт, который определяет тип отправляемой переменной (от короткой до длинной длинной), но я не уверен, как с этим справиться в коде. Прямо сейчас я устанавливаю пустой указатель и выделяю память в соответствии с размером отправляемого значения, а затем использую atoi, atol и atoll для установки этого указателя. Проблема в том, что мне нужно иметь доступ к этому значению, и я не могу сделать это без последующего приведения.

Как можно решить эту проблему?

1 Ответ

4 голосов
/ 22 февраля 2010

Либо всегда храните его в long long локально, либо поместите его в struct, состоящий из флага для размера и union всех возможных типов.

...