Возможно ли глобальное отключение строк с нулевым завершением в GCC?Отключение NUL-завершения строк в GCC
Я использую свою собственную библиотеку строк, и мне абсолютно не нужны последние символы NUL, поскольку она уже хранит правильную длину внутри структуры.
Однако, если бы я хотел добавить 10 строк, это означало бы, что в стеке ненужно выделено 10 байт. С широкими строками это еще хуже: что касается x86, то 40 байтов потрачены впустую; и для x86_64, 80 байтов!
я определил макрос, чтобы добавить эту стеку распределённых строк в мои структуры:
#define AppendString(ppDest, pSource) \
AppendSubString(ppDest, (*ppDest)->len + 1, pSource, 0, sizeof(pSource) - 1)
Использования sizeof(...) - 1
работает довольно хорошо, но мне интересно, смогу ли я избавиться от прекращения NUL, чтобы сэкономить несколько байт ?
Что должно произойти с пустыми строками? Как вы предлагаете справиться с ними? –
Я уверен, что 80 байт не будет проблемой для вашей программы. Особенно на x86. –
В Linux и я предполагаю, что все остальные ОС 'wchar_t' имеют одинаковую длину независимо от архитектуры.Linux, в частности, использует 4 байта как для x86, так и для x86_64. – intgr