【发布时间】:2010-03-28 12:44:28
【问题描述】:
#include <iostream>
#include <cstdlib>
int main() {
cout << "!!!Hello World!!!" << endl;
system("pause");
return main();
}
上述方法有效,但它硬编码了main() 函数。有没有神奇的变量或宏来获取当前运行的函数?
【问题讨论】:
-
如果你想得到一个函数指针或指向当前函数的东西,我认为这是不可能的。
-
@Michael 其实假设 main() 是一个可以调用的函数,那么上面的尾递归可以被编译器优化成一个循环,这样就可以“工作”了。
-
@Neil:你能说出一个优化尾调用的 C 或 C++ 编译器吗?
-
@ttmrichter 在这种特定情况下不,因为调用是非法的,但在一般情况下,GCC 会这样做。见stackoverflow.com/questions/2385599/…
标签: c++