【C++问题总结】尽量减少使用宏,因为即使加了括号也可能会出问题
2012-05-10 19:03
531 查看
#include <iostream>
using namespace std;
#define SQR(x) ((x) * (x))
int main()
{
int i=3;
cout<<"aaa"<<endl;
i=3;
cout<<SQR(++i)<<endl;
system("pause");
return 1;
}
Bug分析:
当调用如下语句时:
i=3;
SQR(++i);
将宏展开就是:
((++i) * (++i));
结果就是
4*5=20;
using namespace std;
#define SQR(x) ((x) * (x))
int main()
{
int i=3;
cout<<"aaa"<<endl;
i=3;
cout<<SQR(++i)<<endl;
system("pause");
return 1;
}
Bug分析:
当调用如下语句时:
i=3;
SQR(++i);
将宏展开就是:
((++i) * (++i));
结果就是
4*5=20;
相关文章推荐
- Mysql学习总结(31)——MySql使用建议,尽量避免这些问题
- c++中使用vector可能会产生的内存管理问题
- 安装和使用vsphere问题总结+可能会持续更新
- 关于Entity Framework更新的几种方式以及可能遇到的问题(附加类型“Model”的实体失败,因为相同类型的其他实体已具有相同的主键值)在使用 "Attach" 方法或者将实体的状态设置为 "Unchanged" 或 "Modified" 时如果图形中的任何实体具有冲突键值,则可能会发生上述行为
- C++中const的不同使用方法及问题总结
- C++技术问题总结map、vector、list、deque各自的使用场合
- C++技术问题总结-第7篇 map、vector、list、deque各自的使用场合
- 总结svn使用过程中可能会碰到的问题
- Mysql学习总结(31)——MySql使用建议,尽量避免这些问题
- 关于使用TabLayout自定义样式的问题总结
- 据说这篇总结覆盖了一般Python开发面试中可能会问到的大部分问题
- IntelliJ IDEA 使用svn时遇到的问题总结
- Mybatis使用过程问题总结
- C++知识点问题总结
- phpmailer发邮件常见的一些问题总结及使用案例
- C++编写网页控件,遇到的问题总结
- 题目1153:括号匹配问题(2010年北京大学计算机研究生机试真题,堆栈的使用)
- C++静态成员变量和静态成员函数使用总结
- Django在使用mod_python+apache中配置VirtualHost的问题总结
- oracle 11g使用deferred_segment_creation 延迟段创建特性时遇到的问题总结