用QT6.7调试Effective.C++第2款的一个例子
用#define MAX(a,b) f((a)>(b)?(a):(b)); 定义了一个函数
用cout<< "MAX(++a,b+10)=" << MAX(++a,b+10) << endl; 出错
但是赋值给
c=MAX(++a,b+10);
cout<< "MAX(++a,b+10)=" << c << endl;
这样又能正常运行。
这是怎么回事,是不是QT编译器问题,看视频别人是用VS调试的
代码如下:
#include <iostream>
using namespace std;
int f(int x){return x;};
#define MAX(a,b) f((a)>(b)?(a):(b));
template<class T>
inline T Max(const T &a,const T &b)
{return f(a>b?a:b);}
int main()
{
a1 nnn;
cout << "number=" << nnn.n()<< endl;
int a=5,b=0,c;
c=MAX(++a,b);
cout<< "MAX(++a,b)=" << c << endl;
c=MAX(++a,b+10);
// cout<< "MAX(++a,b+10)=" << MAX(++a,b+10) << endl;
cout<< "MAX(++a,b+10)=" << c << endl;
cout<<"Max(a,b)="<< Max(++a,b)<< endl;
}
用#define MAX(a,b) f((a)>(b)?(a):(b)); 定义了一个函数
用cout<< "MAX(++a,b+10)=" << MAX(++a,b+10) << endl; 出错
但是赋值给
c=MAX(++a,b+10);
cout<< "MAX(++a,b+10)=" << c << endl;
这样又能正常运行。
这是怎么回事,是不是QT编译器问题,看视频别人是用VS调试的
代码如下:
#include <iostream>
using namespace std;
int f(int x){return x;};
#define MAX(a,b) f((a)>(b)?(a):(b));
template<class T>
inline T Max(const T &a,const T &b)
{return f(a>b?a:b);}
int main()
{
a1 nnn;
cout << "number=" << nnn.n()<< endl;
int a=5,b=0,c;
c=MAX(++a,b);
cout<< "MAX(++a,b)=" << c << endl;
c=MAX(++a,b+10);
// cout<< "MAX(++a,b+10)=" << MAX(++a,b+10) << endl;
cout<< "MAX(++a,b+10)=" << c << endl;
cout<<"Max(a,b)="<< Max(++a,b)<< endl;
}