能够使用相同的流进行广泛和正常的操作 有限制:流可以用于广泛的操作或 用于正常操作。
[...]
重要的是不要混用宽而不宽的用途 流上的操作。没有发布诊断信息。该 应用程序行为将是奇怪的或应用程序将 只是崩溃。
fwide
函数可以帮助避免这种情况。
我已经尝试过vs2012,printf
紧跟着wprintf
,简单的程序正常运行。
然后我的问题是,手册是什么意思?何时以及为什么我们应该使用fwide
函数?
答案 0 :(得分:0)
manual更全面地说:
能够使用相同的流进行广泛和正常的操作 有限制:流可以用于广泛的操作或 用于正常操作。一旦决定就没有办法回来了。只有一个 调用freopen或freopen64可以重置方向。该 取向可以通过三种方式决定:
- 如果使用了任何普通字符函数(包括fread和fwrite函数),则该流被标记为不是面向广的。
- 如果使用任何宽字符函数,则将流标记为面向对象。
- fwide功能可用于设置方向。
重要的是不要混淆使用宽而不宽的操作 在一条小溪上。没有发布诊断信息。应用程序行为 将只是奇怪或应用程序将崩溃。范围广泛 功能可以帮助避免这种情况。
请注意,Microsoft文档说他们的fwide()
未被实现" (它是一个无操作的)并且它不符合标准。"
我对所有这些的解读是,使用glibc的程序不得在单个流上使用窄字符和宽字符函数,而无需重新打开它。也许在微软平台上没有这样的限制;也许甚至其他libc实现也更灵活。