关于tcpl习题4-14定义宏swap(t,x,y)
2016-03-07 23:39
453 查看
题意要求宏,能交换t类型的两个参数。由于愚昧,没读懂题意。于是在网上查到答案:
虽然懂了意思但用gcc写了个例子编译失败。
但去掉宏定义中的()就能正确交换xy的值
这是因为大师在书上明确指出宏不是调用函数,而是直接替换文本插入代码中。所以开始的代码中()一起被插入了代码中。
#define SWAP(t,x,y) (t temp;temp = x;x = y;y = temp;)
虽然懂了意思但用gcc写了个例子编译失败。
#include<stdio.h>
#define SWAP(t,x,y) (t temp;temp = x;x = y;y = temp;)#define dprintf(expr) printf(#expr " = %d\n",expo)
main() {
int x = 10;
int y = 40;
SWAP(int,x,y)
dprintf(x);
dprintf(y);
}
但去掉宏定义中的()就能正确交换xy的值
#include<stdio.h> #define SWAP(t,x,y) t temp;temp = x;x = y;y = temp; #define dprintf(expr) printf(#expr " = %d\n",expo) main() { int x = 10; int y = 40; SWAP(int,x,y) dprintf(x); dprintf(y); }
这是因为大师在书上明确指出宏不是调用函数,而是直接替换文本插入代码中。所以开始的代码中()一起被插入了代码中。
相关文章推荐
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第一部分
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第一部分
- 自组织神经网络介绍:自组织特征映射SOM(Self-organizing feature Map),第一部分
- 实用网络快速查线方法
- RxJava ,OKhttp ,fastJson的合用的MVP框架
- UDP是什么、及UDP和TCP的区别?
- HTTP请求与响应
- TCP文件上传案例
- http://www.linuxidc.com/Linux/2012-01/52138.htm
- socket tcp/ip udp通信
- 机器学习之----初体验
- TCP/IP数据报格式分析
- 【转】【win网络编程】socket中的recv阻塞和select的用法
- 八、Linux下的网络服务器模型
- 集体智慧编程——神经网络预测点击率-Python实现
- 和安全有关的那些事(非对称加密、数字摘要、数字签名、数字证书、SSL、HTTPS及其他)
- 七、TCP/IP协议
- Android OkHttp之 offline cache
- 如何在caffe中自定义网络层
- java后台訪问url连接——HttpClients