直接调用即可。如下示例:

#include<stdio.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<stdio.h>
#include<stdlib.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);system("pause");return 0;
}
测试代码2:通过

#include <stdio.h>
#include <stdlib.h>
#define transit(a, b, c, type) {  type t=a;a=b;b=c;c=t;}
int main()
{int a=1;int b=2;int c=3;printf("a=%d, b=%d, c=%d\n", a, b, c);transit(a, b, c, int);printf("a=%d, b=%d, c=%d\n", a, b ,c);system("pause");return 1;
}

  使用宏函数或者宏函数时,注意如下几点:

  (1)宏函数的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以传参时要格外小心。

  (2)宏函数定义要注意格式,尤其是括号。

  如果上面的宏函数写成 #define MAX(a, b) (a>b?a:b),省去内层括号,则宏展开就成了k = (i&0x0f>j&0x0f?i&0x0f:j&0x0f),运算的优先级就错了。同样道理,这个宏定义的外层括号也是不能省的。若函数中是宏替换为 ++MAX(a,b),则宏展开就成了 ++(a)>(b)?(a):(b),运算优先级也是错了。

  (3)宏函数往往会导致较低的代码执行效率。

 int a[]={9,3,5,2,1,0,8,7,6,4};int max(n){return n==0?a[0]:MAX(a[n],max(n-1));}int main(){max(9);return 0;}

    若是普通函数,则通过递归,可取的最大值,时间复杂度为O(n)。但若是宏函数,则宏展开为( a[n]>max(n-1)?a[n]:max(n-1) ),其中max(n-1)被调用了两遍,这样依此递归下去,时间复杂度会很高。

c语言宏定义函数如何调用相关推荐

  1. C语言宏定义函数的使用(定义单行和多行)

    要写好C语言,漂亮的宏定义是非常重要的.宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等. 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定 ...

  2. C语言宏定义函数中的“_##”的意思

    最近在看google vp9的代码的时候碰到: #define intra_pred_sized(type, size) \ void vp9_##type##_predictor_##size##x ...

  3. 宏定义函数和普通函数

    宏定义函数: 预处理阶段进行简单的文本替换,没有入栈.出栈.参数传递和函数返回等等工作,执行效率明显高于普通函数,因此,简短并且被频繁调用的函数经常用宏定义函数来代替实现 没有参数检查,会影响程序安全 ...

  4. C语言宏定义、宏函数、内置宏与常用宏

    前言: 在C语言中,变量类型.循环控制.基础语法等与其他高级语言基本无异:而C语言(C++)特有的两把双刃剑指针和宏定义/宏函数使得C语言在底层开发中披荆斩棘.无所不能.这两个概念涉及范围比较广,其分 ...

  5. 关于C语言刷题(#define宏定义函数的常见错误)

    关于C语言刷题(#define宏定义函数的常见错误) 首先我们来先看对#define的定义 define,宏定义,C语言中预处理命令一种.分为无参宏定义和带参宏定义.无参宏定义的一般形式为:#defi ...

  6. 转载--c语言宏定义(1)

    作者:独舞风 链接:c语言宏定义(1) 1.为什么要有宏定义? 代码中某个特定数值需要参与运算,而且该数值作用于多个地方,当需要对该数值进行修改时,希望只改动一个地方就能实现该数值的全部更新:即便某个 ...

  7. 宏定义 指针 c语言,C语言宏定义讲解(C和指针 笔记)

    关于C语言宏定义#define 最常用的莫过于通过宏定义定义常数了,例如 #define MAX 1000      通过宏定义程序中需要的常量,方便维护被多次引用的变量,并且宏替换在预处理阶段完成, ...

  8. c/c++宏函数的定义与使用(宏定义函数)(macro definition)

    文章目录 为什么要使用宏函数? 什么是宏 如何使用宏 宏的定义 不带参数的宏 带参数的宏(假参数,不是真正的参数,只是替换而已) 原理 对了,如果宏函数与函数名称相同,优先使用宏定义函数 为什么要使用 ...

  9. define宏定义函数及用模板函数实现同样的功能

    最近在看别人的代码的过程中,发现了宏定义代码,由于自己这块之前没有用过,所以编写了示例程序,学习一下宏定义代码. 比如我们现在有一个需求,要实现两个数字交换,这两个数字可能是整型,浮点型或者其他类型, ...

最新文章

  1. 顺时针打印二维数组C语言递归,按顺时针打印矩阵
  2. bootstrap validator 出现Maximum call stack size exceeded
  3. MariaDB 源码调试
  4. yarn界面杀死application
  5. 语言列表导出xlxs_学习五分钟,掌握一种新语言。
  6. js 动态创建注释节点 createComment
  7. 五个 PostgreSQL 典型故障案例及处理
  8. 【优化布局】基于matlab遗传算法求解配电变电站布局优化问题【含Matlab源码 1317期】
  9. CMU 15-213 Introduction to Computer Systems学习笔记(16) Virtual Memory: Concepts
  10. 无法创建java虚拟机_创建java虚拟机失败的解决方法
  11. tcp 粘包是怎么产生的?
  12. 【HTML】讲讲对HTML5的语义化的理解
  13. Cadence 软件快捷操作
  14. 林群院士:从数学谈教育
  15. 一款内网横向渗透辅助工具
  16. 文件系统学习 RAID原理学习 RAID0 RAID1 RAID2 RAID3 RAID4 RAID5 RAID6 RAID10
  17. C语言所有头文件整理
  18. 微信小程序demo:QQ音乐;音乐搜索,音乐列表及播放停止
  19. windows 更新可能已经自动替换了您的AMD图形驱动程序
  20. matlab从fig图文件中提取数据

热门文章

  1. unity ui 概述_通过此概述了解Unity 2D和Platformer基础知识
  2. 7Z010 引脚功能详解
  3. 投稿别踩雷!| SCI论文重复率问题不容小觑
  4. 2019 ICPC 徐州网络赛 J.Random Access Iterator
  5. 【Python】十二星座图标
  6. New Bing AI搜索引擎初体验-基于ChatGpt4
  7. 计算机在职研究生是学历教育吗,2019年报考计算机技术在职研究生毕业之后为什么还是本科学历呢...
  8. 5种“水”喝掉脸上斑点
  9. 如何借助扬尘视频监测系统开展扬尘污染防控工作?
  10. Linux服务篇:CentOS 6.9搭建NTP服务器