1
标题说明了一切。它知道为什么Visual Studio 2010编译器不知道__func__?
__FUNCTION__
:功能裸名__FUNCSIG__
:的函数(返回类型和参数)__FUNCDNAME__
完整名称:功能错位的名称
但不__func__
虽然它是part of the C99 standard。我希望我的代码能够独立于平台,因此我犹豫使用上述其中之一。你有什么建议吗?谢谢!
标题说明了一切。它知道为什么Visual Studio 2010编译器不知道__func__?
__FUNCTION__
:功能裸名__FUNCSIG__
:的函数(返回类型和参数)__FUNCDNAME__
完整名称:功能错位的名称但不__func__
虽然它是part of the C99 standard。我希望我的代码能够独立于平台,因此我犹豫使用上述其中之一。你有什么建议吗?谢谢!
C99的微软支持一直很粗略,至多。
根据Microsoft网站上的predefined macro列表,它在Visual Studio 2015中受支持。它看起来像支持它的最早版本是Visual Studio 2013,因此如果您确实需要使用该版本,则可能需要升级宏。
微软最近才开始(部分)支持C99 - 你需要升级到VS 2015. –
它在VS2015中工作得很好。如果你的VS版本很老,并且VS2010肯定是gcc年代的老旧版本,那么不会,你不能指望C99的合规性。跨平台的代码总是以#if为主,你只需要另一个来检查'_MSC_VER'和'#define __func__ __FUNCTION__'。或者更新,你必须迟早做得更好。 –