2017-03-01 4 views
0

マクロウィザードはありません。定数に基づいて関数を評価するために_Genericマクロを使用する方法があるのだろうかと思いました。現時点でマクロは次のとおりです:数値定数の前に予想される指定子修飾子リスト

これはCで行うことはできません私は他の提案を歓迎する!私はそれが必要だとは思わないが、この質問への答えにもっとコードが必要な場合は、私はそれを提供してくれるだろう。

ありがとうございます!

答えて

0

これはできません。一般的な関連の左側は、がタイプまたはキーワードdefaultで構成されている必要があります。

あなたは定数をハードコーディングしているので、代わりに種類をハードコーディングしないようにする理由はありません。

#define getData(data) _Generic((data), int: printone, default: printdefault)(data) 

定数1は、常にint型を持つことになりますが、あなたがして定数を使用するつもりなら他の符号付きの型を持つより大きな値は、それらの型を_Genericの選択項目に追加するだけです。

数字のみを使用して形成されるすべての符号付き整数定数は、です。換言すれば、9223372036854775807等の任意の整数定数も大きなものは、カバーされる:

#define getData(data) _Generic((data), int: printone, 
             long: printonel, 
             long long: printonell, 
             default: printdefault)(data) 

が(201X 6.5.1.1一般的な選択1. ISO/IEC 9899から引用します) 一般的な会合:
       型名:代入表現
        defau lt:代入式

+0

ありがとうございました!私はそれに応じて自分のコードを編集しようとします! – TheCrifix

関連する問題