簡體   English   中英

從C中的函數返回const char *

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM