答えて
現在、標準化されたバージョンのCでは、この種の型のイントロスペクションはサポートされていません。
C11には '_Generic'式があります。 –
Cにはマクロがありませんが、これを実現するためのラッパー関数を簡単に書くことができます。
C++を使用せずに、どのようにラッパー関数を記述できますか? –
このような関数を(C201Xの '_Generic'を使用せずに)どのように記述しますか? –
'sizeof'やその他のトリックを使って、限られた範囲のタイプ(' float'/'double' /' long double'など)でこれを行うことができますが、これは一般的には機能しません。 –
はい。しかし、それはC11でのみ利用可能です。
#define FORMAT_OF(x) _Generic((x), \
int: "%d", \
unsigned: "%u", \
const char *: "%s", \
void *: "%p")
値の代わりにタイプの場合は、_Generic((type) 0, ...
を試すことができます。
コンパイラはおそらくC11をサポートしていません。 GCC 4.6(しかし4.5ではなく)は-std=c1x
または-std=gnu1x
でいくつかのC11サポートを有効にしていますが、私は_Generic
がまだサポートされていないと思います。まあ
既にC11ですか?それともまだC1Xですか? –
@ChrisLutz:私は、標準が最後から2番目の投票で全会一致で支持されたと主張する記事を読んでいます。つまり、最終投票はスキップされます。私はどこの記事を読んでいるのか分からず、WGページの情報を見つけることができませんでした。私はそれがまだC11として出版されたとは思わないが、そうなるだろう。 –
私たちがしなければならないことは、コンパイラがそれをサポートするための新しいドラフトを書くまで10年待つだけです。(また、 'const char *'の代わりに 'char * _Generic'は 'const'と' nonconst'型を区別するために '_Generic'を使うことができますか?) –
、あなただけのマクロはタイプを利用したい場合、あなたはできます
#define FORMAT_int "%d"
#define FORMAT_char "%c"
...
#define FORMAT(x) FORMAT_##x
と後でFORMAT(int)
を使用します。しかし
int i;
FORMAT(i);
は仕事、そしてFORMAT(char*)
はどちらか動作しませんではないでしょう。
- 1. データ型に基づくprintf形式
- 2. 特定の形式で表示するデータを取得する
- 3. コマンドラインでperlのprintf形式で特定の引数を取得することは可能ですか?
- 4. 特定の形式から電子メールの本文を取得する
- 5. 特定の日付のデータを別の形式で取得するmysqlクエリ
- 6. Pythonで特定の形式の日付を取得する
- 7. %zd printf形式がVS2010で動作しないのはなぜですか?
- 8. 特定の形式(Python 3.5)でユーザー入力を取得する
- 9. 特定の形式でXML属性を取得する方法
- 10. 基本型ポインタが派生クラスオブジェクトのアドレス値を取得できないのはなぜですか?
- 11. 特定の形式の現在の日付を取得する
- 12. printfを使用して特定の形式で印刷する方法
- 13. 特定の形式のXMLを取得するC#
- 14. ファイル形式の基本
- 15. iOSのHijriで特定の日付形式を取得するには?
- 16. 特定の形式のJSONデータをandroidで作成する
- 17. printf形式指定子のインデックス指定
- 18. 特定のファイル形式を取得するMPMediaItem
- 19. jqueryでJson形式のデータを取得するには
- 20. $ http.postバイナリのデータ(本文)の形式は何ですか?
- 21. golangの特定のインターフェイスの基になる型を取得する
- 22. 基本クラスのジェネリック型パラメータを取得する方法は?
- 23. Youtube APIで基本データを取得
- 24. 現在のタイムスタンプを特定の形式で取得するHH:MM:SS.XXXX + 05:30
- 25. 特定の形式でtime_tを出力する方法は?この形式で
- 26. PHPでクイズゲームのラジオボタン形式のデータを取得する
- 27. firebaseのデータをAndroidのArrayList形式で取得する方法
- 28. 特定の形式で特定の行を印刷する
- 29. リストビューからデータをMapの形式で取得すると、特定の行データをデータベースに追加するにはどうすればよいですか?
- 30. に特定の形式で日付時刻を取得する瞬間JS
あなたは正確に何を達成しようとしていますか?あなたのプログラム内のオブジェクトのデータ型を知っている必要があります... – sarnold
@sarnold、私の場合は 'type'もマクロによって定義されています。 –
C1Xまでは、変数とともに 'fmt'をとるマクロを書く必要があります。 –