微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何找到函数的返回类型?

如何解决如何找到函数的返回类型?

| ѭ0告诉我们当前函数名称函数的返回类型是否有类似的宏?     

解决方法

由于您已经使用了Visual C ++特有的
__FUNCTION__
宏,因此可以查看
__FUNCSIG__
宏-它扩展为完整签名,然后您可以解析并提取返回类型。在Visual C ++中,没有宏可以自行执行此操作。     ,如果在预处理时不需要它: 在C ++ 0x中,可以使用
decltype(myFunc(dummyparams))
,它表示the4ѭ(编译时)的返回类型。 如果现在想要一个字符串,请启用RTTI(运行时类型信息)并使用
typeid().name()
(运行时):
#include <typeinfo>

double myFunc(){
  // ...
  return 13.37;
}

int main(){
  typedef decltype(myFunc()) myFunc_ret;
  char const* myFunc_ret_str = typeid(myFunc_ret).name();
}
但是请注意,
myFunc_ret_str
并非总是返回类型的干净名称-它取决于编译器实现
typeid
的方式。     ,看到函数本身,就可以知道返回类型。毕竟,MACRO甚至在编译之前就可以工作,这意味着,当您编写MACRO时,只有看一下该函数,您才知道该函数的返回类型。 如果我告诉您可以使用
__FUNCSIG__
,那么即使您在代码中使用返回类型时也知道。 但是,如果您需要在模板编程中了解它,那么我建议您看一下:decltype     ,C ++ 11:
template < typename R,typename ...Args >
char const* FunctionReturnTypeAsString( R foo(Args...) ) {
  return typeid(R).name()
}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。