![](/img/trans.png)
[英]C typedef function prototype with struct attempting to reference before defined.
[英]C typedef defined function
在 C 中如何命名函數? 只是名字。
typedef strlen StringLength
無法編譯為: strlen does not name a type
。
函數指針是一個解決方案
static Integer(*StringLength)(const Byte*) = strlen;
“模擬”函數的正確方法 - 用另一個調用替換函數調用 - 是使用#define
。 如果您也不想擔心參數,那么只需執行以下操作:
#define StringLength strlen
函數指針也可能起作用,但它們可能被限制在某個范圍內,並且您必須正確獲取參數和返回類型。 特別是對於strlen
,正確的類型是 (C11 7.24.6.3):
size_t strlen(const char *s);
因此,正確定義的函數指針應如下所示:
size_t (*const StringLength) (const char*) = strlen;
*const
使函數指針本身只讀的地方,這是一個很好的做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.