【问题标题】:-fshort-wchar and std::wstring - segmentation fault-fshort-wchar 和 std::wstring - 分段错误
【发布时间】:2020-08-31 04:14:19
【问题描述】:

我使用 Ubuntu 18.04 和 gcc 7.5.0。我有一个用-fshort-wchar 编译的库。我注意到在库中使用std::wstring 可能会导致分段错误。我找到了一个类似的topic。有一个解释:

如果您想使用 wchar_t 的正确(32 位)定义与标准库或第三方库代码的任何部分进行交互,则 -fshort-wchar 不可用。

我知道当使用-fshort-wchar 编译库时我不能使用std::wstring,但是其他标准库内容呢?为什么我不能与标准库的任何部分交互,例如 std::vector ?

【问题讨论】:

  • “为什么我不能与...的任何部分进行交互”是什么意思?你试过了吗?只要没有传递wchar_ts 就可以了
  • 对,我误解了这个答案。

标签: c++ linux gcc libstdc++


【解决方案1】:
-fshort-wchar          sets the size of wchar_t to 2 bytes

现在想想如果你使用标准库中的一部分不是只是头文件会发生什么。标准库的很大一部分被编译成您链接的库 (libstdc++ / libc++)。编译时 -fshort-wchar 未被使用,因此 wchar_t 的大小在库中为 4 个字节。

【讨论】:

  • Ted 总是有深思熟虑的解释
  • @SombreroChicken 谢谢!我不确定我是否比 OP 已经链接到的内容更好地解释了它。在输入之前我没有阅读该链接。也许有点触发快乐。 :-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-24
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
  • 1970-01-01
相关资源
最近更新 更多