問題タブ [stringification]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - C で任意の変数を文字列に変換する
任意の型の任意の変数を文字列に変換することは可能ですか?
私は次のように書いた
#define TO_STRING(val) #val
これは変数を文字列に変換する有効な方法ですか?
c++ - ストリング化オペレーターの失敗
Cおよび C++ 標準にはすべて、文字列化操作が有効な文字列リテラル トークンの生成に失敗した場合の動作が未定義であるという趣旨のテキストが含まれています。C++11 では、生の文字列リテラルに改行文字を含めることで、これが実際に可能です。しかし、キャッチオールは常に標準に含まれています。
UBまたは不正な形式のプログラムがまだ発生していない場合に、stringizeがUBを生成できる他の方法はありますか?
Cや C++の方言について聞きたいです。私はプリプロセッサを書いています。
c - プリプロセッサによって形成された変数識別子の出力
マクロから展開されたテキストを取得する方法は?
マクロが次のように展開されるため、出力は64です。
定義された貼り付けマクロを使用して、識別子 number2 を文字列として出力するにはどうすればよいですか。出力を作成する方法を知る必要があります: number2: 64直接「number2」と書かないことで、この解決策は必要ありません:
動的なソリューションが必要です。私は次のようにして連結しようとします:
しかし、貼り付けマクロによって返される number2 は整数の識別子であるため、機能しません。テキスト (文字列) として取得するにはどうすればよいですか?
c - C マクロ定義文字列をリテラル文字列に連結する
最初の行を次のようにします。
ここで、それをリテラル文字列定数と連結する必要があります。そんな感じ:
c - c ++のCプリプロセッサマクロで#と##は何を意味しますか
次のコードを読みました。
##
演算子が 2 つの文字列を 1 つにマージするために使用されることは知っていますが、 and#
の前はどうですか?def
abc
c++ - 逆プリプロセッサ文字列化演算子
1 つの SDK の 1 つのインクルード ファイルで定義されているワイド文字列の数値定数が多数あります。これは変更できませんが、頻繁に更新および変更されます。したがって、数日ごとに完全に異なり、更新用のスクリプトを適用したくない(許可されていない)ため、数値で数値定義を宣言することはできません
逆に、定数が数値として定義されている場合は、# プリプロセッサ演算子で文字列を簡単に作成できます。
私は atoi を使用したくありませんし、変数を作成したくありません。プリプロセッサが最適な数値形式の定数が必要なだけです。
逆文字列化演算子がないことは知っていますが、プリプロセッサで文字列をトークン (数値) に変換する方法はありませんか?
c - __VA_ARGS__ で文字列化マクロを定義する際のエラー
「DEBUG:」を引数の先頭に追加し、その引数をprintfに渡す関数マクロをCで実装しようとしています。
これにより、gccで次のエラーが発生します。
おそらく、フォーマットを文字列化し、変数引数をprintfに渡す必要がありますが、これまでのところ、このエラーを乗り越えることはできません。
編集
##
引数の文字列化と二重ハッシュ ( )をあきらめた後、次の__VA_ARGS__
エラーが発生しました。
引数の後にコンマを配置する必要がありますか?
参考までに、DBG() は次のようになります。
macros - マクロの引数をユニコードに文字列化する
ユニコード文字列を与えるようにマクロの引数を文字列化しようとしています。つまり、次を取得したいです:
そして私のマクロはこれです:
残念ながら機能しません。これを行う方法?
c++ - コンマを含む文字列を文字列化する方法は?
コンパイル コマンドでバージョン文字列を渡したい:
私のコード内には、次のものがあります。
マクロにコンマが含まれているため、これは機能しません。つまり、VERSION
2 つの引数を に渡しているように見えますTOSTR()
(明らかに、マクロは1 つの一意の引数としてVERSION
渡された後にのみ展開されます)。STRINGIFY()
ここで見つけた次のアプローチも機能しません。
これは
つまり、マクロCONCAT()
は展開されません。
注 1:バージョン文字列は実際には動的に生成され、引用符が含まれている可能性があるため、コマンド ラインでC文字列を渡したくありません。これはg++ -D VERSION=\""$(GENERATED_STRING)"\"
、渡された引数を文字列化する代わりに単に書くだけでは機能しないことを意味します。
注 2: プリプロセッサ マクロをまったく使用せずにこれを行う方法を誰かが見つけた場合、私は非常に嬉しく思います。