举个例子吧:
#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代入表达式:
直接用(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;}
拓展资料
使用宏函数或者宏函数时,注意如下几点:
①宏函数的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心.
宏定义属于预编译阶段的处理过程.预编译是整个编译过程的第一步.编译器将检查代码中的所有预编译语句,遇到#include则将被包含的文件整个复制粘贴到#include位置替换#include语句,遇到#define语句则定义该宏并将文本中所有出现该宏的代码予以替换,遇到#ifdef、#ifndef、#endif语句则进行判断和执行相应操作.这个时候程序的源代码还是文本形式,编译器还没有开始语法分析,连函数的概念都不存在,又怎么判断函数的代码谁先执行谁后执行呢?
以上就是土嘎嘎小编为大家整理的c语言取消宏定义函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!