找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2527|回復(fù): 5
收起左側(cè)

C語言有內(nèi)聯(lián)函數(shù)嗎,為什么編譯失敗。

[復(fù)制鏈接]
ID:709761 發(fā)表于 2023-1-17 16:36 | 顯示全部樓層 |閱讀模式
C語言有內(nèi)聯(lián)函數(shù)嗎,為什么編譯失敗,哪里寫錯了。
51hei圖片_20230117163420.png
回復(fù)

使用道具 舉報

ID:94031 發(fā)表于 2023-1-17 20:36 | 顯示全部樓層
C51 不支持 inline 關(guān)鍵字。
回復(fù)

使用道具 舉報

ID:155507 發(fā)表于 2023-1-17 21:39 | 顯示全部樓層
Keil C51不支持inline
inline是C++的特性,即使是ANSI C也是不支持的,我也查了一下KeilC51 Compiler的用戶手冊,沒有關(guān)鍵字inline的支持。

ANSI C 在C99中引入了Inline關(guān)鍵字,但默認情況下,Keil Arm C編譯器以C89/C90模式編譯。

Keil文檔明確表示,C90中沒有內(nèi)聯(lián)信息

如果你要進行跨平臺的編程,可以在編譯單元頭部定義一下預(yù)處理指令,避免修改C的源代碼:
比如:
#ifdef __C51__
#define inline
#endif

另外,我建議不要試圖寫宏代碼來間接達到inline的效果,因為宏代碼實在是太容易出錯了。
(個人觀點)

https://developer.arm.com/documentation/ka003625/latest
回復(fù)

使用道具 舉報

ID:883242 發(fā)表于 2023-1-17 21:42 | 顯示全部樓層
都支持inline,但是inline不是c語言關(guān)鍵字,每個編譯器實現(xiàn)都不一樣,到底應(yīng)該怎么寫要查手冊。
回復(fù)

使用道具 舉報

ID:130230 發(fā)表于 2023-1-20 14:05 | 顯示全部樓層
把編譯器調(diào)成C99模式
回復(fù)

使用道具 舉報

ID:146878 發(fā)表于 2023-1-30 10:45 | 顯示全部樓層
C51不支持內(nèi)聯(lián)。用宏展開吧。一樣。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表