:gcc 3.3以降で__func__を使用することは可能ですか? (C++)3.3の前に、私は次のマクロを使用するMSコンパイラとgccのバージョンでは
DEBUG_WARNING(...) printf(">WARNING: "__FUNCTION__"() " __VA_ARGS__);
用途:
DEBUG_WARNING("someFunction returned %d", ret);
出力:
>WARNING: Class::FunctionName() someFunction returned -1
その非常に便利私たちにはたくさんのシステムがあり、すべて出力を送信します。その1行のマクロで、出力を適切にフィルタリングすることができます。小さなコード、大きな使用、幸せな私。
__FUNCTION__
(およびC++で__func__
)の定義が変更されているため(私は信じています)、それもマクロを実行不能にしました。
文字列を手作業で作成する関数を使用していますが、マクロが好きです。
Gcc 3.3でこの単純な1行マクロを使用するには簡単な方法がありませんか?
:D
: 'のprintf( "> WARNING:%sの()" FMTは、FUNCTIONは、VA_ARGS)'コンマは私が構築してるのプラットフォーム上で必要とされます。助けてくれてありがとう! :D –
##トリックのヒントをありがとう。 私はマクロを完全にプラットフォームに依存せず、頭痛なくすることができます。これは私の最終的なマクロの外観です: '#define DEBUG_WARNING(fmt、...)printf(">警告、%s() "fmt、__FUNCTION__、## __VA_ARGS__); これはGCC 4.1で正常にコンパイルされます。 1、および他の2つのプラットフォームで使用されるMicrosoftコンパイラも含まれます。 –