#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;
本文通过一个具体的C++代码示例介绍了使用宏定义时可能遇到的问题。特别关注了递增运算符与宏展开可能导致的意外结果,并展示了如何避免此类错误。
2412

被折叠的 条评论
为什么被折叠?



