cppreference 显示了
strchr()
的这些原型:
char *strchr( const char *str, int ch ); (1)
/*QChar*/ *strchr( /*QChar*/ *str, int ch ); (2) (since C23)
并提供第二个版本的解释:
类型通用函数等价于(1)。令 T 为非限定字符对象类型。
- 如果
的类型为str
,则返回类型为const T*
。const char*
- 否则,如果
的类型为str
,则返回类型为T*
。char*
- 否则,行为是未定义的。
这是什么
QChar*
?这是新类型吗?
如果是这样,GCC 和/或 Clang 是否已经支持它?我可以在我自己的应用程序代码中使用它吗?
多年来,
strchr()
(以及其他一些函数)采用 const char 指针参数(指向以 0 结尾的字符串),并返回指向字符串内某个位置的非常量指针。新的 Qualified Char 版本是通用函数,当传递 const char 指针时,返回 const char 指针,当传递常规 char 指针时,返回相同的值。
包含基本原理和受影响功能的完整列表的提案是 PDF ,可以在此处阅读。