Мне нравится, когда мой код предупрежден для VS.NET и GCC, и я хочу, чтобы мой код был готов к 64-битной версии.
Сегодня я написал небольшой модуль, который работает с буферами памяти и обеспечивает доступ к данным через интерфейс в стиле файла (например, вы можете читать байты, записывать байты, искать и т. Д.).
В качестве типа данных для текущей позиции и размера чтения я использовал size_t, поскольку это наиболее естественный выбор. Я получаю предупреждения, и они должны работать и в 64-битной среде.
На всякий случай: моя структура выглядит так:
typedef struct
{
unsigned char * m_Data;
size_t m_CurrentReadPosition;
size_t m_DataSize;
} MyMemoryFile;
Подпись size_t
, по-видимому, не определена на практике. Поиск кода Google подтвердил это.
Теперь передо мной стоит дилемма: я хочу проверить дополнения с помощью size_t
на переполнение, потому что мне приходится иметь дело с предоставленными пользователем данными, а сторонние библиотеки будут использовать мой код. Тем не менее, для проверки переполнения я должен знать значение. Это имеет огромное значение в реализации.
Итак, какого черта я должен писать такой код независимо от платформы и компилятора?
Можно ли проверить подпись size_t
во время выполнения или во время компиляции? Это решило бы мою проблему. Или, может быть, size_t
была не самой лучшей идеей.
Есть идеи?
РЕДАКТИРОВАТЬ : Я ищу решение для языка C!