`
yangyou230
  • 浏览: 1652239 次
文章分类
社区版块
存档分类

#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)。

 
阅读更多

#define SECOND_PER_YEAR (60 * 60 * 24 * 365)UL

具体分析如下:

1、基本语法。不能以分号结束,括号的使用。

2、预处理器将为你计算常数表达式的值,因此,直接写出是如何计算出一年中有多少秒而不是计算出实际的值,是更清晰没有代价的。

3、这二个表达式将会是16位机的整型数溢出,因此要用长整型符号L,告诉编译器这个常数是长整型数。

含参数的宏与函数的优缺点如下:

1.函数调用时,先求出实参表达式的值,然后带入形参。而使用带参的宏只是进行简单的字符替换。

2.函数调用是在程序运行时处理的,分配临时的内存单元;而宏展开则是在编译时进行的,在展开时并不分配内存单元,不进行值的传递处理,也没有“返回值”的概念。

3.对函数中的实参和形参都要定义类型,二者的类型要求一致,如不一致,应进行类型转换;而宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时带入指定的字符即可。宏定义时,字符串可以是任何类型的数据。

4.调用函数只可得到一个返回值,而用宏可以设法得到几个结果。

5.使用宏次数多时,宏展开后源程序长,因为每展开一次都使程序增长,而函数调用不使源程序变长。

6.宏替换不占运行时间。而函数调用则占运行时间(分配单元、保留现场、值传递、返回)。

7、参数每次用于宏定义时,他们都将重新求值,由于多次求值,具有副作用的参数可能会产生不可预料的结果。而参数在函数被调用前只求值一次,在函数中多次使用参数并不会导致多种求值过程,参数的副作用并不会造成任何特殊的问题。

一般来说,用宏来代表简短的表达式比较合适。

分享到:
评论

相关推荐

    [面试/笔试系列10]C/C++面试题大汇总

    用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define 语法的基本知识(例如:不能以分号结束,括号的...

    计算机研究生复试面试题

    用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 嵌入式系统中经常要用到无限循环,你怎么样用C编写死循环呢?while(1){}或者for...

    嵌入式C面试题

    面向嵌入式学者的C语言工作面试题 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本...

    C和C++面试题目汇总

    用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define 语法的基本知识(例如:不能以分号结束,括号的...

    ARM技术面试题

    1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。 #define MIN(A,...

    与c有关的常用面试问题

    用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)  #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL    我在这想看到几件事情: ; #define 语法的基本知识(例如:不能以分号结束,...

    C++ 题集 ( 最全 的 C\C++ 试题集 和 答案)

    1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,...

    C/C++ 题集 大汇 总 笔/面试 题汇总

    用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define 语法的基本知识(例如:不能以分号结束,括号的...

    16道C语言面试题.doc

    1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,...

    软件工程师C/C++笔试题

    用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号...

    c笔试题 由本人整理后,很经典,请大家下载

    用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)

    嵌入式开发笔试题 非常经典实用

    1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,...

    C语言笔试题目集锦

    很好的题目 很经典 1 用预处理指令#define 声明一个常数 用以表明1年中有多少秒(忽略闰年问题)    #define SECONDS PER YEAR 60 60 24 365 UL  我在这想看到几件事情:

    面试读-经典嵌入式面试题

    用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: ?; #define 语法的基本知识(例如:不能以分号结束,括号...

    软件工程师笔试题(C/C++)

    1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,...

    16道嵌入式C语言面试题

    1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束...

    C++面试题汇总.doc

    用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define 语法的基本知识(例如:不能以分号结束,括号的...

    C++面试题集有答案(很给力)

    1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

    笔试题目汇总 c++有关程序

    1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情:

    嵌入式c语言的一些面试题

    1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) ;2. 写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个;3. 预处理器标识#error的目的是什么?

Global site tag (gtag.js) - Google Analytics