宏函数
来源:互联网 发布:centos 7 官网下载 编辑:程序博客网 时间:2024/05/16 08:45
1. 宏函数定义的时候需要加({ })
比如:
#include <stdio.h>#define swap(a, b) ({(a)=(a)+(b);\ (b)=(a)-(b);\ (a)=(a)-(b);})int main(int argc, const char *argv[]){ int array[2] = {10, 20}; printf("array[0] = %d;array[1] = %d\n", array[0], array[1]); swap(array[0], array[1]); printf("array[0] = %d;array[1] = %d\n", array[0], array[1]); return 0;}
此函数的说明:
a = a + b;
b = a - b; // b = (a + b) - b = a;
a = a - b; // a = (a + b) - (a) = b;
宏函数中为了避免swap(10+3, 12) ,这种情况的出现,应该采用这种方案:
要搞定它其实很简单,别吝啬括号就行了。
2. 宏函数相似返回值的实现
#include <stdio.h>#define swap(a, b) ({(a)=(a)+(b);\ (b)=(a)-(b);\ (a)=(a)-(b);\ a;})int main(int argc, const char *argv[]){ int array[2] = {10, 20}; int temp = 0; printf("array[0] = %d;array[1] = %d\n", array[0], array[1]); temp = swap(array[0], array[1]); printf("array[0] = %d;array[1] = %d\n", array[0], array[1]); printf("swap = %d\n", temp); return 0;}
在 swap 中,整体的值是最后一个元素的值
即 a 的值
1 0
- 函数、宏、内联函数
- 宏函数
- 宏函数
- 宏函数
- 宏函数
- 函数宏
- 宏函数
- 宏函数
- 宏函数
- 宏函数
- 宏函数
- 宏、函数和内联函数
- Cognos函数(二) - 宏函数
- 常规函数,内联函数,宏
- 内联函数和宏函数
- 宏函数和自定义函数
- 宏、函数、宏函数,内联函数的区别
- 宏函数、内联函数、普通函数的区别
- IO测试工具 iometer 和pdtest的对比
- Fragment对象的使用(一)
- Android键盘“enter”键设置为“下一项”失效解决办法
- DIV CSS display (block none inline)属性的用法教程
- asn1学习笔记
- 宏函数
- SDWebImage清理缓存及其使用问题
- Android 图片滑动效果: ViewPager
- [TwistedFate]滑块UISlider 跑图UIImageView
- HDU 1290:献给杭电五十周年校庆的礼物【数学】
- css教程之列表属性
- Button控件实现发送验证码倒计时方法
- 文章列表中文章标题过长的做法
- WIFI基本知识整理