首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

#if #ifdef和#ifndef的用法和区别

#if #ifdef和#ifndef用法 移位运算符的优先级高于条件运算符,重载是不能改变运算符优先级的,这点要注意,所以代码应当像下面这样调整,写宏的时候一定要注意优先级,尽量用括号来屏蔽运算符优先级...x:y int main() { int a=10,b=20; #ifdef MAX printf("40:The larger one is %dn",MAXIMUM...和#ifndef区别 #ifdef 标识符 程序段1 #else 程序段2 #endif 它的作用是:当标识符已经被定义过(一般是用#define命令定义),则对程序段1进行编译,否则编译程序段2。...其中#else部分也可以没有,即: #ifdef 程序段1 #denif 这里的“程序段”可以是语句组,也可以是命令行。这种条件编译可以提高C源程序的通用性。...有时也采用下面的形式: #ifndef 标识符 程序段1 #else 程序段2 #endif 只是第一行与第一种形式不同:将“ifdef”改为“ifndef”。

1.4K10

讲通CC++预编译条件编译指令 #ifdef,#ifndef,#endif,#define,…

文章目录 开门见山 预处理指令 #include #define 示例一 示例二 示例三 #undef #program once program 条件编译指令 #ifdef、#ifndef、#endif...(x):(y)) int main(void) { #ifdef MAX //判断这个宏是否被定义 printf("3 and 5 the max is:%d\n",MAX(3,5));...#ifdef、#ifndef、#endif #ifdef用于判断某个宏是否定义,和#ifndef功能正好相反,二者仅支持判断单个宏是否已经定义 #endif用于终止#if预处理指令。...2 #else // ... remained cases #endif // #ifdef ABC 如果不需要多条件预编译的话,上面例子中的#elif和#else均可以不写。...而应当使用#ifdef或#ifndef。 注意: #if、#elif之后的宏只能是对象宏。如果宏未定义,或者该宏是函数宏,则编译器可能会有对应宏未定义的警告。

4.2K40

Linux 内核 内存管理】RCU 机制 ⑤ ( RCU 层次架构概念 | RCU 层次架构源码解析 | RCU 层次架构每层最多叶子数 | RCU 层次架构每个叶子 CPU 数量 )

数量 一、RCU 层次架构概念及源码 ---- RCU 机制 中 , 会 根据 CPU 数量 , 按照 " 树形结构 “ 组成 RCU 层次架构 , 称为 ” RCU Hierarchy " ; 在 Linux...源码 linux-5.6.18\include\linux\rcu_node_tree.h 头文件中定义了 RCU 层次架构 , RCU 层次架构 源码 : /* * Define shape of..._3 (RCU_FANOUT_2 * RCU_FANOUT) #define RCU_FANOUT_4 (RCU_FANOUT_3 * RCU_FANOUT) 源码路径 : linux...-5.6.18\include\linux\rcu_node_tree.h#31 二、RCU 层次架构源码解析 ---- " RCU 层次架构 “ 是 根据 ” CPU 数量 " 确定的 , 在 Linux...CONFIG_RCU_FANOUT #define RCU_FANOUT CONFIG_RCU_FANOUT #else /* #ifdef CONFIG_RCU_FANOUT */ # ifdef

72210

Linux 内核 内存管理】物理内存组织结构 ⑤ ( 内存区域 zone 类型简介 | 内存区域类型zone_type 枚举源码分析 | zone_type 枚举源码 )

可移动区域 6、ZONE_DEVICE 设备区域 三、zone_type 枚举源码 内存管理系统 3 级结构 : ① 内存节点 Node , ② 内存区域 Zone , ③ 内存页 Page , Linux...物理内存 " ; 一、内存区域 zone 类型简介 ---- " 内存节点 " 是内存管理的 最顶层结构 , " 内存节点 " 再向下划分 , 就是 " 内存区域 " , " 内存区域 " 的类型 在 Linux...内核中使用 enum zone_type 枚举类型进行描述 , zone_type 枚举定义在 Linux 内核源码的 linux-4.12\include\linux\mmzone.h#293 位置...需要使用 DMA 直接内存访问区域 ; 如 ISA 总线 , ( Industry Standard Architecture 工业标准体系结构 ) , 只支持 16 位的 I/O 设备访问 , #ifdef...CONFIG_ZONE_DEVICE ZONE_DEVICE, #endif __MAX_NR_ZONES }; 源码路径 : linux-4.12\include\linux\mmzone.h

1.9K20
领券