首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言 嵌套展开规则

先讲一些嵌套展开规则: 一般的展开规律像函数的参数一样:先展开参数,再分析函数,即由内向外展开; 当中有#运算符的时候,不展开参数; 当中有##运算符的时候,先展开函数,再分析参数; ##运算符用于将参数连接到一起...利用括号将整个定义的内容括起来,保证整个定义中的表达式优先运算。 嵌套嵌套使用的难点,也是易错点。...下面我将嵌套展开规则用流程图来说明一下: 注意:上图中的 2 和 3 是条件或,只要满足一个条件就会进入流程 5。...TO_STRING2(PARAM(ADDPARAM(1))); printf("%s\n", str); //输出: PARAM(ADDPARAM(1)) return 0; } 上例中两个嵌套展开流程如下...a_PARAM(INT_1)) -> 展开 TO_STRING1:"a_PARAM(INT_1)" 注意:嵌套展开规则与编译器有关,不同的编译器可能对同一个嵌套展开不同。

1.3K20
您找到你想要的搜索结果了吗?
是的
没有找到

替换、条件编译、头文件展开

替换、文件编译和头文件的展开 程序执行的几个步骤: 1.预处理: ①将头文件展开替换 ③条件编译 ④去掉注释 2.编译: ①语义语法纠错 ②将.c文件编译成汇编语言 3.汇编:将汇编语言变成二进制机器语言...#error // 停止编译并显示错误信息 的定义 #define机制包括了一个规定,允许把参数替换到文本中,这种实现通常称为或定义。...这样,定义参数和#define定义可以包含其他#define定义的符号。但是,不可以出现递归。...在定义时,经常会出现的两个运算符 # 和 ## #:出现在定义中的#运算符,会将其后面参数转化为一个字符串。...FBI_WARNING printf("Unknown\n"); #else printf("NO\n"); #endif } return 0; } 头文件的展开

2.2K20

如何正确使用const(常量),define()

前言 在开发中,也许我们会经常使用到定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用定义与const修饰符。...本篇主要介绍在开发中怎么正确使用const与define(定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用、常量、变量: : // 注意后面不需要带符号...让我来先将一下我对它们之间的理解吧: :只是在预处理阶段进行文本替换,没有类型,不做任何类型检查,编译器可以对相同的字符串进行优化,只保存一份到数据段。...取的时候只需要给前面和中间的地址,如果是整型、浮点型会有多分拷贝,但这些数写在指令中,占的只是代码片段而且,大量使用会导致二进制文件变大。

2.2K70

如何正确使用const(常量),define()

前言 在开发中,也许我们会经常使用到定义,或者用const修饰一些数据类型,经常有开发者不知道怎么正确使用,导致项目中乱用定义与const修饰符。...本篇主要介绍在开发中怎么正确使用const与define(定义) 当我们想定义全局共用的一些数据时,比如通知名字,动画时长等等,我们可以用、常量、变量: : // 注意后面不需要带符号...让我来先将一下我对它们之间的理解吧: :只是在预处理阶段进行文本替换,没有类型,不做任何类型检查,编译器可以对相同的字符串进行优化,只保存一份到数据段。...取的时候只需要给前面和中间的地址,如果是整型、浮点型会有多分拷贝,但这些数写在指令中,占的只是代码片段而且,大量使用会导致二进制文件变大。

86320

如何在JavaScript中访问暂存在的嵌套对象

其中之一就是当你试图访问嵌套对象时,会遇到这个错误 Cannot read property 'foo' of undefined 在大多数情况下,处理嵌套的对象,通常我们需要安全地访问最内层嵌套的值。...user.personalInfo.name : null; 如果你的嵌套结构很简单,这是可以的,但是如果数据嵌套五或六层深,那么你的代码就会看起很混乱: let city; if ( data...Oliver Steele的嵌套对象访问模式 这是我个人的最爱,因为它使代码看起来干净简单。 我从 stackoverflow 中选择了这种风格,一旦你理解它是如何工作的,它就非常吸引人了。...不幸的是,你不能使用此技巧访问嵌套数组。 使用数组Reduce访问嵌套对象 Array reduce 方法非常强大,可用于安全地访问嵌套对象。...除了安全访问嵌套对象之外,它还可以做很多很棒的事情。

8K20

iOS学习——iOS (define)与常量(const)的正确使用

概述   在iOS开发中,经常用到定义,或用const修饰一些数据类型,经常有开发者不知怎么正确使用,导致项目中乱用与const修饰。你能区分下面的吗?知道什么时候用吗?..."汉斯哈哈哈"; NSString const *HSCoder = @"汉斯哈哈哈"; NSString * const HSCoder = @"汉斯哈哈哈"; 当我们想全局共用一些数据时,可以用、...变量、常量 // #define HSCoder @"汉斯哈哈哈" //变量 NSString *HSCoder = @"汉斯哈哈哈"; //常量,四种写法 static const NSString...NSString *HSCoder = @"汉斯哈哈哈"; NSString const *HSCoder = @"汉斯哈哈哈"; NSString * const HSCoder = @"汉斯哈哈哈"; 、...变量、常量之间的区别 :只是在预处理器里进行文本替换,没有类型,不做任何类型检查,编译器可以对相同的字符串进行优化。

1.7K30
领券