gpt4 book ai didi

c - 使用 -fshort-wchar 时 wcslen 返回错误的长度

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:59:43 24 4
gpt4 key购买 nike

源代码:

const wchar_t* x = L"abc";   
printf("%d\n",wcslen(x));

我用 g++ -fshort-wchar xxx.cpp -o xxx 编译了它,结果是 15。为什么?

最佳答案

gcc 文档警告:

 *Warning:* the `-fshort-wchar' switch causes GCC to generate code
that is not binary compatible with code generated without that
switch. Use it to conform to a non-default application binary
interface.

据推测,您链接到的 wcslen 是用正常长度的 wchar_t 生成的,因此会一直计数,直到找到 (regular_wchar_t)0。使用短 wchar_t 生成的 L"abc" 不会以常规 wchar_t 终止,因此 wcslen将继续遍历随机内存,直到找到一个。

关于c - 使用 -fshort-wchar 时 wcslen 返回错误的长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17847996/

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