在函数内部声明函数的一个问题
感到这个问题有讨论的必要,特新开一贴讨论。
int main()
{
int add(int, int);
int n = add(1, 2); // 为什么这一步可以执行
return 0;
}
int add(int x, int y)
{
return x + y;
}
而在下面例子里
#include <iostream>
using namespace std;
int main()
{
void swap(int &,int &);
int a=3,b=5;
swap(a,b); // 这一步却不执行
cout < < "a= " < <a < < "b= " < <b < <endl;
return 0;
}
void swap(int & i,int & j)
{
int temp;
temp=i;
i=j;
j=temp;
}
这两个例子有什么不同呢?为什么在第一个例子里 add(1, 2);可以执行,而在第二个例子里swap(a,b); 不执行呢?
可能有人不相信,大家可以测试一下。测试办法:
在第一个例子里, 在这一行int n = 0;设置一个断点,然后按F11,看是否进入add函数。我测试是进入的。
在int a=3,b=5; 设置一个断点,按F5运行到这一行,然后按F10(按F11也行)看运行到哪一行?我的是直接运行到 cout < < "a= " < <a < < "b= " < <b < <endl;。
测试环境:英文版Win Xp sp2,VC 6.0 (都是D版的)
[解决办法]
兄弟阿,我不是给你回了么。
第二个例子运行的呀。
[解决办法]
偶用VC6...正常运行...
[解决办法]
我手头没有VC6。0
在DEVCPP下没问题。
[解决办法]
路过了.
应该是相同道理的.
[解决办法]
兄弟啊,建议你给swap换个名字。系统里叫swap的东西多了点,你得先排除因为重名,触发什么故障了。
[解决办法]
mingw可以正确编译