重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
举个例子吧:
成都创新互联是一家集网站建设,崇义企业网站建设,崇义品牌网站建设,网站定制,崇义网站建设报价,网络营销,网络优化,崇义网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
#include stdio.h
//宏定义:
#define MAX(a,b) (ab) ? a : b
int main()
{
int x,y,max;
printf("input two numbers: ");
scanf("%d%d",x,y);
max = MAX(x,y);//调用宏
printf("max=%d\n",max);
}
宏定义是就完全替换,加不加分号看你自己喜欢,比如一个宏定义
#define WRCMD a = 1
这里加了分号,那在用时就不用加直接写WRCMD然后换行就行,
如果这时没加,那就在用时是这个样子的
WRCMD;
宏定义的基础知识。引用宏定义时,直接代入进行代换。
既然已经宏定义SUB(a) (a)-(a),而程序中出现的对应a的是a+b,那么就将a换为a+b代入表达式:
d=SUB(a+b)*c=(a+b)-(a+b)*c=(2+3)-(2+3)*5
直接用(a+b)-(a+b)代换SUB(a+b)。这一点和数学是不同的,不要强行往数学上靠。
#include 是用来引出库函数用来调用一些系统已经定义好的函数,方便用户使用,#define是宏定义,格式为#define n m 表示用n来代替m使用,但和赋值的概念是不同的,当定义好后以后就不能改变它的值,除非用#undef 来消除这个宏定义.而且#define和#include并非是c语言的语句.
直接调用即可。如下示例:
#includestdio.h#define sum(b,c){int d=0;d=b+c;printf("两者的和:%d\n",d);}int main(){ int x=0,y=0; scanf("%d%d",x,y); sum (x,y); return 0;}
拓展资料
使用宏函数或者宏函数时,注意如下几点:
1.宏函数的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心。
2.宏函数定义要注意格式,尤其是括号。
如果上面的宏函数写成 #define MAX(a, b) (ab?a:b),省去内层括号,则宏展开就成了k = (i0x0fj0x0f?i0x0f:j0x0f),运算的优先级就错了。同样道理,这个宏定义的外层括号也是不能省的。若函数中是宏替换为 ++MAX(a,b),则宏展开就成了 ++(a)(b)?(a):(b),运算优先级也是错了。
3.宏函数往往会导致较低的代码执行效率。
若是普通函数,则通过递归,可取的最大值,时间复杂度为O(n)。但若是宏函数,则宏展开为( a[n]max(n-1)?a[n]:max(n-1) ),其中max(n-1)被调用了两遍,这样依此递归下去,时间复杂度会很高。
宏定义属于预编译阶段的处理过程。预编译是整个编译过程的第一步。编译器将检查代码中的所有预编译语句,遇到#include则将被包含的文件整个复制粘贴到#include位置替换#include语句,遇到#define语句则定义该宏并将文本中所有出现该宏的代码予以替换,遇到#ifdef、#ifndef、#endif语句则进行判断和执行相应操作。这个时候程序的源代码还是文本形式,编译器还没有开始语法分析,连函数的概念都不存在,又怎么判断函数的代码谁先执行谁后执行呢?