首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么strerror不返回一个const限定指针?

为什么strerror不返回一个const限定指针?
EN

Stack Overflow用户
提问于 2010-06-22 18:56:03
回答 3查看 558关注 0票数 2

我正在浏览C99标准,寻找我现在不记得的东西,当我注意到从strerror()函数返回的指针(第7.12.6.2节)不符合const-限定时,尽管标准说:

strerror函数返回一个指向字符串的指针,其内容为

特定地点。指向的数组不应由程序修改,

但可能会被随后对strerror函数的调用覆盖。

此函数是否有明显的理由返回可修改的字符串,而不是如下所示:

代码语言:javascript
复制
char const * const strerror(int errnum);  

或者至少

代码语言:javascript
复制
char const * strerror(int errnum);
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-22 19:06:49

与字符串文本的类型相同:它已经与C89中的字符串类型一样,描述了在语言中引入const之前的一种实践。更改它将使当前有效程序无效。

票数 6
EN

Stack Overflow用户

发布于 2010-06-26 07:48:57

有关静态缓冲区的响应是错误的;返回的指针类型是否为const与缓冲区无关。返回类型完全是关于API与不使用const的历史代码的兼容性,并且没有什么坏处。编写现代const感知代码的人只需立即使用返回值,或者将其存储到指针到const变量中。

票数 2
EN

Stack Overflow用户

发布于 2010-06-22 19:05:28

这可能是因为许多历史实现使用静态缓冲区“打印”错误字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3096237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档