You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
/* * C语言中#ifdef和#else、#endif是条件编译语句,也就是说在满足某些条件的时候,夹在这几个关键字中间的代码才编译,不满足就不编译 * 下面这句话的意思就是如果定义了CONFIG_X86这个宏,就把boot_init_stack_canary这个代码编译进去 */#ifdefCONFIG_X86/* * If we're the non-boot CPU, nothing set the stack canary up * for us. The boot CPU already has it initialized but no harm * in doing it again. This is a good place for updating it, as * we wont ever return from this function (so the invalid * canaries already on the stack wont ever trigger). */boot_init_stack_canary();//只有在x86这种non-boot CPU机器上执行,该函数主要用于初始化stack_canary的值,用于防止栈溢出#endif
为了方便大家理解C/C++的语法,我将源码中涉及到的一些小知识整理一下,以源码分析的顺序列出,我会在知识点下列出出现的地方,大家也可以对照着看。
1.oninline、inline、__init、void
出现在《Android系统启动流程之Linux内核》
更多使用参考GCC特性之__init修饰解析
2.struct
出现在《Android系统启动流程之Linux内核》
3.函数指针
出现在《Android系统启动流程之Linux内核》
更多使用参考函数指针
4. &用法
出现在《Android系统启动流程之Linux内核》
更多使用参考C指针
5. 函数指针定义,* 指针,unsigned
出现在《Android系统启动流程之Linux内核》
更多使用参考 深入解析C语言中函数指针 ,C语言入门之指针用法教程
6. ->
出现在《Android系统启动流程之Linux内核》
更多使用参考 C语言中 -> 是什么意思
6. #ifdef、#else、#endif(条件编译)
出现在《Android系统启动流程之Linux内核》
更多使用参考 条件编译#ifdef的妙用详解_透彻
The text was updated successfully, but these errors were encountered: