【发布时间】:2014-11-17 20:23:07
【问题描述】:
一个函数以两种不同的方式定义,一种使用#define,另一种使用函数。但是对于输出,我得到了不同的值。
输出是3 -1。
我想知道为什么使用F(x,y) 会产生不同的值。
#include<iostream>
#define F(x,y) y-x
using namespace std;
int F2(int x,int y)
{
return y-x;
}
int main()
{
int x=1,y=2, h=2;
cout << F(x+h,y) << " " << F2(x+h,y) << endl;
return 0;
}
【问题讨论】:
-
可能(一些缺少的括号),一个常见的宏问题。 避免他们这样愚蠢的事情。
-
这里的教训是......?
-
与其对函数使用#define,不如使用内联函数,
inline int F(int x, int y) {return y-x;}你会得到更好的编译器诊断(比如,传入两个指针,可以在原始代码中编译成功#定义宏,但你可能并不真正想要)
标签: c++