我试图通过使用C ++宏来获取函数的名称。我使用g ++ 4.9.2并使用以下代码:
#include <iostream>
template<typename T>
class Foo {
public:
Foo() { }
T f(int i) {
T r;
std::cout << __PRETTY_FUNCTION__ << std::endl;
std::cout << __FUNCTION__ << std::endl;
std::cout << __func__ << std::endl;
return r;
}
};
int main() {
Foo<int> f;
f.f(1);
return 0;
}
我得到了:
T Foo<T>::f(int) [with T = int]
f
f
我想使用Foo<T>::f(int)
在Windows中拥有Foo<int>::f(int)
或__FUNCTION__
之类的内容。我尝试使用BOOST_CURRENT_FUNCTION
,但查看我读过的代码,应该将变量设置为__func__
的值。
显然,创建一个能够执行我想要的功能可能非常简单,但是我希望将宏设置为正确的值。