#define SECOND_PER_YEAR (60 * 60 * 24 * 365)UL
具体分析如下:
1、基本语法。不能以分号结束,括号的使用。
2、预处理器将为你计算常数表达式的值,因此,直接写出是如何计算出一年中有多少秒而不是计算出实际的值,是更清晰没有代价的。
3、这二个表达式将会是16位机的整型数溢出,因此要用长整型符号L,告诉编译器这个常数是长整型数。
|
含参数的宏与函数的优缺点如下:
1.函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。
2.函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值的传递处理,也没有“返回值”的概念。
3.对函数中的实参和形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时带入指定的字符即可。宏定义时,字符串可以是任何类型的数据。
4.调用函数只可得到一个返回值,而用宏可以设法得到几个结果。
5.使用宏次数多时,宏展开后源程序长,因为每展开一次都使程序增长,而函数调用不使源程序变长。
6.宏替换不占运行时间。而函数调用则占运行时间(分配单元、保留现场、值传递、返回)。
7、参数每次用于宏定义时,他们都将重新求值,由于多次求值,具有副作用的参数可能会产生不可预料的结果。而参数在函数被调用前只求值一次,在函数中多次使用参数并不会导致多种求值过程,参数的副作用并不会造成任何特殊的问题。
一般来说,用宏来代表简短的表达式比较合适。
分享到:
相关推荐
用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?while(1){}或者for...
用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: ; #define 语法的基本知识(例如:不能以分号结束,...
**问题1:用预处理指令#define声明一个常数,以表明一年中有多少秒(忽略闰年问题)** 解决方案: ```c #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL ``` **解析**:此题考察了对`#define`语法的基本理解、预...
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) 在 C 语言中,我们可以使用预处理指令#define 来声明一个常数。例如,下面是一个声明常数 SECONDS_PER_YEAR 的示例代码: ```c #...
1. 用预处理指令 #define 声明一个常数,用以表明 1 年中有多少秒(忽略闰年问题)。 在这个问题中,我们可以了解到预处理指令的基本知识,例如不能以分号结束,括号的使用等等。此外,我们还可以了解到预处理器将...
例如,声明一个常数 SECONDS_PER_YEAR,表示1年中有多少秒(忽略闰年问题)。`#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL` 2. 嵌入式系统中无限循环的实现 在嵌入式系统中,经常需要使用无限循环。可以使用...
定义一个常数,用以表明1年中有多少秒(忽略闰年问题),例如: #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 这个定义中,使用了UL表示无符号长整型数,以避免16位机的整型数溢出。 写一个 "标准" 宏 MIN,...
例如,使用#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL可以声明一个常数,表示1年中有多少秒(忽略闰年问题)。预处理指令#define可以在编译前对代码进行修改,从而提高代码的效率和可读性。 2. 嵌入式系统中...
使用预处理指令`#define`声明一个常数,以表明一年中有多少秒(忽略闰年问题)。示例代码如下: ```c #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL ``` **考察点:** - `#define`语法的基本知识,例如...
在C语言中,`#define`用于声明常量,例如定义一年有多少秒(忽略闰年)。正确做法是: ```c #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL ``` 此题考察的知识点包括: - `#define`的基本语法(无需分号结尾...
预处理指令#define可以用来声明一个常数,在这个例子中,我们使用#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL来声明一个常数,表示一年中有多少秒(忽略闰年问题)。 接下来,我们讨论了死循环的实现方式。在...
- **题目**: 使用预处理指令`#define`声明一个常数,用以表示1年中有多少秒(忽略闰年问题)。 ```c #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL ``` - **考查目的**: 1. **`#define`语法基本知识**: ...
- **问题描述**:使用预处理指令`#define`声明一个常数,用来表示一年中有多少秒,忽略闰年的情况。 - **解决方案**: ```c #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL ``` - **解释**: - `#define`是...
使用预处理指令 `#define` 声明一个常数,用以表明一年中有多少秒(忽略闰年问题) ```c #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL ``` **知识点分析**: - **基本语法**:`#define` 是预处理器指令,...
- **题目描述**:使用预处理指令`#define`声明一个常数,用来表示一年中有多少秒(忽略闰年问题)。 - **示例代码**: ```c++ #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL ``` - **解析**: - **`#...
- **题目描述**:“用预处理指令`#define`声明一个常数,用以表明1年中有多少秒(忽略闰年问题)” - **解析**: - `#define`用于定义宏,它不支持类型检查,因此在定义常量时,需要注意数值范围的问题。 - 使用宏...