gpt4 book ai didi

c - 在 GCC 中禁用字符串的 NUL 终止

转载 作者:太空宇宙 更新时间:2023-11-04 03:08:20 24 4
gpt4 key购买 nike

是否可以在 GCC 中全局禁用以 NUL 结尾的字符串?

我正在使用我自己的字符串库,我完全不需要最后的 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 终止以节省几个字节?

最佳答案

这很糟糕,但您可以显式指定每个字符数组常量的长度:

char my_constant[6] = "foobar";
assert(sizeof my_constant == 6);

wchar_t wide_constant[6] = L"foobar";
assert(sizeof wide_constant == 6*sizeof(wchar_t));

关于c - 在 GCC 中禁用字符串的 NUL 终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1772078/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com