Можем ли мы изменить размер 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, возможно, для встроенной системы, сделайте это. В противном случае, вы можете найти это "не стоит усилий".

Другие вопросы по тегам