glibc 中 fputwc()、putwc() 和 putwchar() 定义不一致

2023-12-02

Why fputwc(), putwc() and putwchar()接受类型参数wchar_t代替wint_t? 这与相应的非宽字符函数相矛盾fputc(), putc() and putchar(), 这需要int, not char.


那是因为wchar_t需要持有WEOF值和char不需要持有EOF value.

For char, the fputc(), putc() and putchar() functions need to accept values which can hold both values in the unsigned char and EOF range, where EOF can be a negative number so a int is required to hold them both.1

Whereas wchar_t itself is required to hold a WEOF character as well as the biggest locale.2 WEOF represents a value which fits inside wchar_t but doesn't overlap with any locale.3

This is made more confusing because of the the names of char and wchar_t, you shouldn't see wchar_t as a char but more as a int which size isn't dependent on the architecture but on the size of the biggest locale (and on the value of WEOF).4


1 Why putchar, toupper, tolower, etc. take a int instead of a char?

2 Quoting ISO/IEC 9899:201x 7.19.2:

WEOF它扩展为类型的常量表达式wint_t其值不对应于扩展字符集的任何成员。本子条款中的几个函数接受(并返回)它以指示文件结尾,也就是说,不再有来自 溪流。它还用作不对应于扩展字符集的任何成员的宽字符值。

3 Quoting your link:

宏观WEOF计算结果为类型的常量表达式wint_t 其值不同于扩展字符集的任何成员。

4 Quoting C++ Reference:

wchar_t其值范围可以表示受支持的语言环境中指定的最大扩展字符集的所有成员的不同代码的类型。

In c++, wchar_t是一个独特的基本类型(因此它没有在<cwchar>也没有任何其他标头)。

In c, 这是一个typedef属于整数类型。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

glibc 中 fputwc()、putwc() 和 putwchar() 定义不一致 的相关文章

  • setContextProperty 和对象的 setProperty 之间的区别

    我现在真的很困惑 有什么区别 QQmlApplicationEngine engine engine rootContext setContextProperty myObject userData and object gt setPro
  • 在动态事件处理程序中引用“this”

    在我的 myClass 类中 我使用 Reflection Emit 为 myClass 类成员之一动态编写事件处理程序 我已经成功地做到了这一点 现在 我想修改事件处理程序以调用 myClass 类中的实例方法之一 但是 我无法弄清楚如何
  • 如何将包含 5000 条记录的 Excel 文件插入到 documentDB 中?

    我有一个 Excel 文件 最初约有 200 行 我能够将 Excel 文件转换为数据表 并且所有内容都正确插入到 documentdb 中 Excel 文件现在有 5000 行 在插入 30 40 条记录后不会插入 其余所有行不会插入到
  • Accept() 是线程安全的吗?

    我目前正在用 C 语言为我正在做的课程编写一个简单的网络服务器 我们的一项要求是实现一个线程池来使用 pthread 处理连接 我知道我将如何粗略地执行此操作 在主线程中调用accept并将文件描述符传递给freee线程 但是我的朋友建议了
  • 将图像文件从网址复制到本地文件夹?

    我有该图像的网址 例如 http testsite com web abc jpg http testsite com web abc jpg 我想将该 URL 复制到 c images 中的本地文件夹中 而且当我将该文件复制到文件夹中时
  • 在Application_AquireRequestState事件中用POST数据重写Url

    我有一个在其中注册路线的代码Application AcquireRequestState应用程序的事件 注册路由后 我会在 Http 运行时缓存中设置一个标志 这样我就不会再次执行路由注册代码 在此事件中注册路线有特定原因Applicat
  • 用户控件内所有控件均为空

    我有一个 UserControl 它使用 UserControl 以及其他控件 In the ascx文件我有以下代码
  • 无法从 Web api POST 读取正文数据

    我正在尝试从新的 Asp Net Web Api 中的请求中提取一些数据 我有一个像这样的处理程序设置 public class MyTestHandler DelegatingHandler protected override Syst
  • 存储过程上的 OdbcCommand - 输出参数上出现“未提供参数”错误

    我正在尝试执行存储过程 通过 ODBC 驱动程序针对 SQL Server 2005 但收到以下错误 过程或函数 GetNodeID 需要参数 ID 但未提供该参数 ID 是我的过程的 OUTPUT 参数 在存储过程中指定了一个输入 mac
  • 我可以仅在少数情况下关闭模拟吗

    我有一个始终使用模拟的应用程序 但是 当用户以管理员身份登录时 一些操作需要他们写入服务器本身 现在 如果这些用户在实际服务器上没有权限 有些用户没有 则不会让他们写入 我想做的是关闭几个命令的模拟 有没有办法做这样的事情 using Ho
  • C# datagridview 列转入数组

    我正在用 C 构建一个程序 并在其中包含一个 datagridview 组件 datagridview 有固定数量的列 2 我想将其保存到两个单独的数组中 但行数确实发生了变化 我怎么能这样做呢 假设一个名为 dataGridView1 的
  • 手动将 ClientBase 集合类型从 Array[] 更改为 List<>

    我将自己的 WCF 代理与 Client Base 一起使用 我想做一些类似于 svc util 中的 ct 属性的操作 并告诉代理返回 List 集合类型 我不能使用 List 因为实体由 nhibernate 管理 所以我必须使用 IL
  • 特征密集稀疏矩阵乘积是线程化的吗?

    我知道稀疏密集产品是根据文档进行线程化的 https eigen tuxfamily org dox TopicMultiThreading html https eigen tuxfamily org dox TopicMultiThre
  • 在简单注入器中注册具有多个构造函数和字符串依赖项的类型

    我正在尝试弄清楚如何使用 Simple Injector 我在项目中使用了它 注册简单服务及其组件没有任何问题 但是 当组件具有两个以上实现接口的构造函数时 我想使用依赖注入器 public DAL IDAL private Logger
  • 在VisualStudio DTE中,如何获取ActiveDocument的内容?

    我正在 VisualStudio 中编写脚本 并尝试获取当前 ActiveDocument 的内容 这是我当前的解决方案 var visualStudio new API VisualStudio 2010 var vsDTE visual
  • 从事务范围调用 WCF 服务方法

    我有这样的代码 using TransactionScope scope TransactionScopeFactory CreateTransactionScope some methodes calls for which scope
  • .NET JIT 编译的代码缓存在哪里?

    NET 程序首先被编译为 MSIL 代码 当它被执行时 JIT编译器会将其编译为本机机器代码 我想知道 这些JIT编译的机器代码存储在哪里 它只存储在进程的地址空间中吗 但由于程序的第二次启动比第一次快得多 我认为即使在执行完成后 该本机代
  • TPL 数据流块下游如何获取源生成的数据?

    我正在使用 TPL Dataflow 处理图像 我收到处理请求 从流中读取图像 应用多次转换 然后将生成的图像写入另一个流 Request gt Stream gt Image gt Image gt Stream 为此 我使用块 Buff
  • 在 C++ 和 Windows 中使用 XmlRpc

    我需要在 Windows 平台上使用 C 中的 XmlRpc 尽管我的朋友向我保证 XmlRpc 是一种 广泛可用的标准技术 但可用的库并不多 事实上 我只找到一个库可以在 Windows 上执行此操作 另外一个库声称 您必须做很多工作才能
  • 使用 Chrome 和 Selenium 设置 LocalStorage

    我正在尝试使用 OpenQA Selenium 和 Chrome 设置本地存储键和值 我认为这相当微不足道 但我似乎无法让它发挥作用 我对 C 很陌生 所以我可能错过了一些东西 无论如何 我有这个功能 public static void

随机推荐

  • Laravel RESTful 控制器参数

    我使用 Laravel 4 和 Angular JS 来使用 RESTful 控制器处理 http 请求 我有一个 RESTful 控制器 UserController具有以下功能 public function getIndex is R
  • 怎样清除手指上的油漆?

    我是 android 新手 我在 Api Demo 中的 FingerPaint java 的帮助下使用手指准备了一个绘画视图 它工作正常 同一个视图包含一个按钮 清除 如果我们单击按钮绘画将被清除 空屏幕和一个按钮 我的问题是如何清除绘画
  • 如何避免Java中的ResultSet已关闭异常?

    一旦我的代码到达我的while rs next 循环它产生ResultSet是关闭异常 是什么原因导致此异常以及如何纠正它 EDIT 我注意到我的代码中正在嵌套while rs next 与另一个循环 rs2 next 两个结果集都来自同一
  • iOS Safari Mobile 不会仅触发一次 pageshow

    iOS Safari 在以下情况下似乎不会触发 pageshow 事件 假设我有 3 页 页面 A 在 pageshow 事件中有一些代码 Page B Page C 用户导航自A gt B 按后退按钮 页面显示触发正常 然后 用户导航到另
  • 如何在 Spring Boot 中获取 DispatcherServeletInitializer 功能

    我们正在寻求将我们的项目迁移到 Spring Boot 但目前尚不清楚如何复制其功能AbstractAnnotationConfigDispatcherServletInitializer在 Spring Boot 中 public cla
  • 如何使用 PHP 更新/编辑 JSON 文件 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 这是我的JSON activity code 1 activity name FOOTBALL activity code 2 activity name CRICKET 我需要更新
  • 为什么 JLabels 上的图像图标在运行时会像素化,但在设计模式下却不会?

    左 设计模式 右 运行 每次我运行程序时 图像图标都会变得像素化或模糊 而且我在任何地方都找不到同样的问题 这些图像在设计模式下看起来不错 有谁知道这个问题的解决方案 我正在使用这行代码来获取图像 private Image img hom
  • 如何在Matlab中从矩阵中提取非垂直列

    我有矩阵 A 和向量 b 它指定要为矩阵的每个相应行提取的元素的列索引 例如 A 1 2 3 4 5 6 7 8 9 b 1 3 2 我想要c 1 6 8 关于输出 如何实现这一目标 I tried A b 但它不能按我的需要工作 可能有一
  • Rust 的泛型 FromStr 对象可以做什么?

    Rust s str类有一个parse方法返回一个FromStr目的 parse是模板化的 因此正在解析的类型str可以手动指定 例如 3 parse
  • 在运行时更改已部署应用程序的任务栏图标

    我想更改任务栏图标以在收到新邮件时通知用户 就像 Outlook 收到新邮件时通知用户一样 我已经在网上搜索解决方案 这都是关于更改窗口图标 如下所示 Uri iconUri new Uri Resources envelop ico Ur
  • 为什么for循环要用分号?

    在大多数 C 派生语言 C Java Javascript 等 中 for循环具有相同的基本语法 for int i 0 i lt 100 i code here 为什么此语法包含分号 而分号通常保留用于行尾 另外 为什么后面没有分号i 这
  • 如何检测iPhone中特定声音的声音频率?

    我正在开发一个应用程序 我想检测声音频率 如何检测特定声音 例如狗的声音 的频率 有人有教程或一些示例代码吗 检测单个频率 甚至计算单个 FFT 都不是区分狗吠声与相同音量的其他常见声音的可靠方法 可能有效的方法是使用 MFCC 进行声音指
  • CLR 何时尝试加载引用的程序集?

    我想编写一个小型安装程序应用程序来安装网站并创建 IIS 虚拟目录 该应用程序应在 Windows XP Server 2003 IIS 6 以及 Vista 2008 IIS 7 上运行 问题是 对于 IIS 6 我们通过调用 WMI M
  • 如何将 ArrayList 从 Java 传递到 android 的 opencv 中的本机端(NDK)

    在Java方面我有 List
  • GetMonitorInfo 和 GetDeviceCaps 中第二个显示器的宽度和高度不正确

    我正在尝试获取左上角的 x y 和右下角的 x y 并计算显示器的宽度和高度 我的辅助显示器是 1920x1080 如我的显示设置屏幕截图所示 我通过两种方式获取显示器尺寸 下面的代码是 js ctypes 但我简化了所有错误检查和其他 c
  • 请确保您尝试使用的元素仍然已安装

    我使用 stripe react stripe js 中的 CardElement 在一个视图中进行条纹 然后使用确认卡付款从另一个角度来看 const card useSelector state gt state someObject
  • 在四个解决方案中调试一个网站

    我有一个包含四个网站的解决方案 当我调试一个网站时 我得到了四个 ASP Net 部署服务器实例 我可以只调试一个网站而不运行其他网站吗 在 Visual Studio 中 单击每个网站的根目录 将出现项目属性窗口 有一个名为 调试时始终启
  • 如何在 JSF 2.0 中的 CDI 情况下使用视图范围

    我在 Netbeans 6 9 中创建了一个 JSF 2 0 项目 我开始使用 CDI 创建项目后 当我尝试添加范围时 我注意到其中没有视图范围 我想知道会话范围和视图范围指的是同一个东西吗 我可以使用对话范围代替视图范围吗 如果没有 那么
  • 使用辅助功能服务获取通知图标

    有没有办法获取系统通知的图标 我可以通过无障碍服务收到包裹通知 我什至可以从中获取图标的 id 但我被困在那里 我不知道如何使用 id 来获取实际的位图 以便我可以显示它 因为它不是来自我的 apk 到目前为止 这是我的代码 Overrid
  • glibc 中 fputwc()、putwc() 和 putwchar() 定义不一致

    Why fputwc putwc and putwchar 接受类型参数wchar t代替wint t 这与相应的非宽字符函数相矛盾fputc putc and putchar 这需要int not char 那是因为wchar t需要持有