从C中的函数返回const char *

时间:2012-01-24 20:26:58

标签: c api gcc const

在我的库中,我必须将字符串返回给调用者。我返回的字符串将是一个全局数组,调用者的用途就是读取字符串。我不希望他们修改它..

这是宣布函数的正确方法..

const char * get_some_details();

当调用者将返回值赋给char * ptr或者指定给const char * ptr时,这应该生成一个警告(仅尝试gcc),但稍后会尝试修改它。

我在问,因为我希望像getenv()这样的函数返回const char *。但它返回char *。返回const char *有什么问题吗?

2 个答案:

答案 0 :(得分:6)

在这种情况下,返回const char*是正确的做法。

许多较旧的API不使用const,因为它们在C90中引入const之前(之前没有const)。

答案 1 :(得分:2)

这是正确的做法。

许多标准库函数在逻辑上应该char *const char *,因为历史原因:在C89之前,没有const;在C89之后,如果不破坏应用程序代码,则无法更改其类型签名。作为一般规则,使用标准库作为样式指南;它很老,包含许多不再被视为良好实践的东西。 (咳嗽 gets