只占编译时间对不对
❶ C语言:#define N 5 不占用运行时间,那么占用编译时间吗
是滴。宏定义不占运行时间,但占用编译时间。
宏是简单的文本替换,函数调用有开销的。 编译链接后才能运行!
❷ 在下列有关宏替换的叙述中,正确的说法是 A)宏替换占用运行时间
宏名用大写字母表示只是个习惯,大小写都行;
宏替换不占用运行时间,只占编译时间;因为宏替换发生在编译预处理阶段,预处理也是编译工作的一部分。
宏名无类型;
宏替换只是字符替换;
带参数的宏替换和函数不等价;
所以答案选D。
❸ 计算机编译系统对宏定义在编译时进行语法检查这句话为什么错
第一步被换为area=a*b。
宏定义末尾不加分号,减少输入错误和便于修改。宏替换在编译前进行,不做表达式求解函数调用在编译后程序运行时进行,只占编译时间。
除了一般的字符串替换,函数调用不会。
宏展开不占运行时间,不分配内存。
宏的哑实结合不存在类型,作用域为其后的程序,还要做参数代换。
格式:数组大小常用宏定义。
预处理是在编译之前的处理。
宏定义又称为宏代换;
",利用宏则可以设法得到多个值。
宏展开使源程序变长。
函数只有一个返回值,预处理不做语法检查。一切以换为前提,准确理解之前就“换”;宏"1;第一步换为area=r*r;
正确的宏定义是#define
S(r)
(r)*(r);
宏名和参数的括号间不能有空格;
宏替换只作替换:
#define
宏名(参数表)
字符串;
例如、值传递:
#define
标识符
字符串;
其中的标识符就是所谓的符号常量,b)
a*b;
area=S(3:
(1)宏名一般用大写;
(2)使用宏可提高程序的通用性和易读性,也没有类型转换,第二步被换为area=3*2,而编译工作的任务之一就是语法检查:将宏名替换为字符串.带参数的宏、做任何事情之前先要换,并且分配内存。
预处理(预编译)工作也叫做宏展开;中永远不包含宏。
(3)宏定义不分配内存;
(4)宏定义写在函数的花括号外边;
,不做计算:
#define
PI
3,第二步被换为area=a+b*a+b:
(5)实参如果是表达式容易出问题:
#define
S(r)
r*r
area=S(a+b)。
即在对相关命令或语句的含义和功能作具体分析之前就要换;
类似于函数调用。
格式.1415926。
把程序中出现的PI全部换成3。
(6)可以用#undef命令终止宏定义的作用域。
(7)宏定义可以嵌套。
(8)字符串",变量定义分配内存,通常在文件的最开头。1415926说明,也称为“宏名”,简称“宏”、宏替换。
❹ C语言宏定义效率问题
先回答你第二个问题编程编程就是要生成程序 把你写的代码变成程序的过程就是编译 代码本身就是一堆文字而已运行就是你执行这个程序第一个问题宏定义不是什么都能做的 它跟函数有本质区别如果功能不复杂而且可以用宏定义实现的话那一般是宏定义效率更高因为调用函数要有参数压栈 过程记录保存 返回 过程记录的返回等额外开销不过这里你可能会产生一点误解 我也给你讲不了了 没办法 慢慢积累吧
❺ C语言中宏替换占不占用运行时间
1.
宏替换不占用运行时间。宏替换是在编译时,编译器完成的。占用编译时间。
2.
编译时,编译器会将代码中的宏用对应定义好的代码进行直接替换,然后再对源代码进行编译。
3.
所以宏比函数在运行时更快,因为它不用像函数调用时,要对现有数据进行入栈保存,运行完后,在出栈恢复;它是直接编译好的代码。
❻ C语言,宏名有类型,其参数也有类型对嘛判断
C语言中,宏名没有类型,其参数也没有类型。
宏不存在类型问题,宏名无类型,它的参数也无类型,只是一个符号代表,展开时代入指定的字符串即可。宏定义时,字符串可以是任意类型的数据。
在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去代换。
(6)只占编译时间对不对扩展阅读
带参宏注意事项:
1、宏名和形参表的括号间不能有空格。
2、宏替换只作替换,不做计算,不做表达式求解。
3、函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存。
4、函数只有一个返回值,利用宏则可以设法得到多个值。
5、宏展开使源程序变长,函数调用不会。
6、宏展开不占用运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)。
7、为防止无限制递归展开,当宏调用自身时,不再继续展开。 如:#define TEST(x) (x + TEST(x))被展开为1 + TEST(1)。
❼ 谭浩强的书上说宏替换不占运行时间,只占编译时间,可宏替换不是在预处理时就解决了么不会占用编译时间吧
不占用
程序从源码到可执行文件,主要包括以下几个过程:预处理器进行预处理(预处理器),接着有时候可能进行预编译,接着是编译(编译器),接着是连接(连接器)(产生可执行文件)。不过现在的好多集成平台都把前面三步放到一起了。