2016-04-15 7 views
1

タイトルはそれをすべて言っています。機能の裸の名前 なぜVisual Studio 2010コンパイラは__func__を知らないのですか?

  • __FUNCSIG__
  • __FUNCDNAME__(戻り値の型およびパラメータを持つ)関数の完全な名前:関数の符号化名
  • しかし、それはないが__func__それは

    • __FUNCTION__知っていますpart of the C99 standardです。コードがプラットフォームに依存しないようにしたいので、上記のいずれかを使用することを躊躇します。アドバイスはありますか?ありがとうございました!

    +1

    マイクロソフトは非常に最近(部分的に)C99をサポートし始めました。あなたはVS 2015にアップグレードする必要があります。 –

    +1

    VS2015ではうまく動作します。あなたのVSバージョンが古く、VS2010がgccで確かに老齢であるなら、いいえ、あなたはC99に従うことはできません。クロスプラットフォームのコードは常に#ifで覆われています。あなたは '_MSC_VER'と' #define __func__ __FUNCTION__'をチェックするために別のコードが必要です。または更新すると、遅かれ早かれ早めに更新する必要があります。 –

    答えて

    2

    マイクロソフトのC99サポートは、最高でもかなりスケッチになっています。

    このpredefined macroによれば、MicrosoftのWebサイトには、Visual Studio 2015でサポートされているリストがあります。サポートされている最も古いバージョンのVisual Studio 2013だったので、実際に使用する必要がある場合はアップグレードする必要がありますマクロ。

    関連する問題