C语言 结构体定义
staticinlinevoid*to_ram_addr(void*addr){u32base;base=KSEG0ADDR(RALINK_SOC_SDRAM_BASE)...
static inline void *to_ram_addr(void *addr)
{
u32 base;
base = KSEG0ADDR(RALINK_SOC_SDRAM_BASE);
我看到linux内核代码中有如上定义的结构体,请问这个static inline中的inline是什么意思?
u32 base;又怎么解释?
KSEG0ADDR是一个函数名吗? 展开
{
u32 base;
base = KSEG0ADDR(RALINK_SOC_SDRAM_BASE);
我看到linux内核代码中有如上定义的结构体,请问这个static inline中的inline是什么意思?
u32 base;又怎么解释?
KSEG0ADDR是一个函数名吗? 展开
3个回答
帕剌斯
2024-10-29 广告
2024-10-29 广告
德国Palas 成立于1983年,总部位于德国巴登符腾堡州的卡尔斯鲁厄。作为气溶胶技术专家, Palas 致力于为用户提供气溶胶颗粒物的产生、处理、测量与分析解决方案,是该领域内全球先进的开发商和制造商。基于自身技术的独特优势,Palas ...
点击进入详情页
本回答由帕剌斯提供
展开全部
C语言基础还没搞定就看linux内核,有魄力。
static和inline都是修饰函数的,声明为static inline的函数编译时直接展开为代码(就没有函数调用了),类似宏展开;与宏展开比较,宏是预处理程序进行处理的,没有类型检查,而内联函数(static linline修饰)会有编译器的检查,更安全。
KSEG0ADDR应该是寄存器相关的宏
static和inline都是修饰函数的,声明为static inline的函数编译时直接展开为代码(就没有函数调用了),类似宏展开;与宏展开比较,宏是预处理程序进行处理的,没有类型检查,而内联函数(static linline修饰)会有编译器的检查,更安全。
KSEG0ADDR应该是寄存器相关的宏
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
inline关键字用来定义一个类的内联函数,引入它的主要原因是用它替代C中表达式形式的宏定义。
u32 是一个数据类型 相当于unsigned int。
KSEG0ADDR()肯定是一个函数,具体是什么,这个不太清楚了。
u32 是一个数据类型 相当于unsigned int。
KSEG0ADDR()肯定是一个函数,具体是什么,这个不太清楚了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询