在我的库中,我必须将字符串返回给调用者。我返回的字符串将是一个全局数组,调用者的用途就是读取字符串。我不希望他们修改它..
这是宣布函数的正确方法..
const char * get_some_details();
当调用者将返回值赋给char * ptr或者指定给const char * ptr时,这应该生成一个警告(仅尝试gcc),但稍后会尝试修改它。
我在问,因为我希望像getenv()这样的函数返回const char *。但它返回char *。返回const char *有什么问题吗?
答案 0 :(得分:6)
在这种情况下,返回const char*
是正确的做法。
许多较旧的API不使用const
,因为它们在C90中引入const
之前(之前没有const
)。
答案 1 :(得分:2)
这是正确的做法。
许多标准库函数在逻辑上应该char *
为const char *
,因为历史原因:在C89之前,没有const
;在C89之后,如果不破坏应用程序代码,则无法更改其类型签名。作为一般规则,不使用标准库作为样式指南;它很老,包含许多不再被视为良好实践的东西。 (咳嗽 gets
)