[英]returning const char * from a function in C
在我的庫中,我必須將一個字符串返回給調用者。 我返回的字符串將是一個全局數組,調用者的用途就是讀取字符串。 我不希望他們修改它..
這是聲明函數的正確方法嗎?
const char * get_some_details();
這應該在調用者將返回值賦給char * ptr或分配給const char * ptr時生成警告(僅嘗試gcc),但稍后會嘗試修改它。
我問,因為我希望像getenv()這樣的函數返回const char *。 但它返回char *。 返回const char *有沒有問題?
在這些情況下,返回const char*
是正確的做法。
許多較舊的API不使用const
因為它們早於在C90中引入const
(之前沒有const
)。
這是正確的方法。
許多標准庫函數接受或返回char *
,邏輯上它應該是const char *
,由於歷史原因:在C89之前,沒有const
; 在C89之后,如果不破壞應用程序代碼,則無法更改其類型簽名。 作為一般規則, 不使用標准庫作為一個風格指南; 它很老,包含許多不再被視為良好實踐的東西。 ( 咳 gets
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.