2016-04-15 36 views
1

标题说明了一切。它知道为什么Visual Studio 2010编译器不知道__func__?

  • __FUNCTION__:功能裸名
  • __FUNCSIG__:的函数(返回类型和参数)
  • __FUNCDNAME__完整名称:功能错位的名称

但不__func__虽然它是part of the C99 standard。我希望我的代码能够独立于平台,因此我犹豫使用上述其中之一。你有什么建议吗?谢谢!

+1

微软最近才开始(部分)支持C99 - 你需要升级到VS 2015. –

+1

它在VS2015中工作得很好。如果你的VS版本很老,并且VS2010肯定是gcc年代的老旧版本,那么不会,你不能指望C99的合规性。跨平台的代码总是以#if为主,你只需要另一个来检查'_MSC_VER'和'#define __func__ __FUNCTION__'。或者更新,你必须迟早做得更好。 –

回答

2

C99的微软支持一直很粗略,至多。

根据Microsoft网站上的predefined macro列表,它在Visual Studio 2015中受支持。它看起来像支持它的最早版本是Visual Studio 2013,因此如果您确实需要使用该版本,则可能需要升级宏。

相关问题