Можем ли мы изменить размер size_t в C?
Можем ли мы изменить размер size_t
в С?
3 ответа
size_t
это не макрос. Это typedef
для подходящего целого типа без знака.
size_t
определяется в <stddef.h>
(и другие заголовки).
Это наверное typedef unsigned long long size_t;
и вы действительно не должны даже думать о его изменении. Стандартная библиотека использует его в соответствии с определением Стандартной библиотеки. Если вы измените его, поскольку вы не можете изменить Стандартную библиотеку, вы получите все виды ошибок, потому что ваша программа использует размер size_t, отличный от Стандартной библиотеки. Вы больше не можете звонить malloc()
, strncpy()
, snprintf()
...
Если вы хотите раскошелиться на Linux или NetBSD, тогда "Да"
Хотя вы можете переопределять макросы, этот, вероятно, является typedef.
Если вы определяете среду, тогда вполне разумно указать size_t
как вам нравится. Затем вы будете нести ответственность за все стандартные функции C99, для которых ожидается соответствующий код size_t
,
Итак, это зависит от вашей ситуации. Если вы разрабатываете приложение для существующей платформы, то ответ - нет.
Но если вы определяете исходную среду с одним или несколькими компиляторами, тогда ответ - да, но ваша работа исключена для вас. Вам потребуется реализация всех библиотечных подпрограмм с элементом API size_t
который может быть скомпилирован с остальной частью вашего кода с новым size_t
ЬурейеЕ. Итак, если вы разветвляетесь на NetBSD или Linux, возможно, для встроенной системы, сделайте это. В противном случае, вы можете найти это "не стоит усилий".