__LINE__
マクロを使用して、さまざまな変数名を生成しようとしています。Benchmark (utils 名前空間にある) というスコープ付きのベンチマーク クラスがあり、そのコンストラクターは文字列を取ります。作成したマクロ定義は次のとおりです。
#define BENCHMARK_SCOPE utils::Benchmark bm##__LINE__(std::string(__FUNCTION__))
残念ながら、これにより次のエラーが発生します。
<some_file_name>(59): error C2374: 'bm__LINE__' : redefinition; multiple initialization
__LINE__
これにより、マクロが展開されないという結論に至ります。この投稿に従ってマクロスを作成しました。__LINE__
が拡張されない理由はありますか?
編集:おそらくコンパイラ情報も関連しています。ビジュアルスタジオ2010を使用しています。