問題タブ [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.

0 投票する
2 に答える
4499 参照

php - JSON.stringify() は JSON オブジェクトをシリアライズするのに信頼できますか?

Javascript から PHP に完全なオブジェクトを送信する必要があります。PHP 側で JSON.stringify() を実行し、次に json_decode() を実行するのは明らかなように思えましたが、これは ":" と "," を含む文字列を許可しますか? 問題を引き起こす可能性のある大きなユーザー入力文字列に対して escape() 関数を実行する必要がありますか? そのエスケープ関数は何でしょうか?エスケープが私の目的のために働くとは思わない。

知っておく必要がある JSON.stringify() の欠点はありますか?

ありがとう

0 投票する
2 に答える
19707 参照

c - 正確には、二重文字列化のトリックはどのように機能するのでしょうか?

少なくとも一部のCプリプロセッサでは、マクロの名前ではなく値を文字列化できます。これは、ある関数のようなマクロを介してマクロを文字列化する別のマクロに渡すことによります。

使用例はこちら

これは、少なくとも GCC と Clang (両方とも) では機能しますが、C 標準の用語でどのよう-std=c99に機能するかはわかりません。

この動作は C99 で保証されていますか?
もしそうなら、C99はどのようにそれを保証しますか?
そうでない場合、動作が C 定義から GCC 定義に変わるのはどの時点ですか?

0 投票する
2 に答える
418 参照

c - インライン メソッド名の GCC プリプロセッサ

次のようなコードがあるプロジェクトに取り組んでいます。

しかし、次の結果が得られます。

「Array」と「_init」の間にスペースを入れる これは関数名なので、当然スペースは入れたくありません。スペースを空ける方法を知っている人はいますか?

0 投票する
4 に答える
46896 参照

c-preprocessor - define マクロのプラグマ

プラグマステートメントを他のステートメントと一緒にマクロに埋め込む方法はありますか?

私は次のようなことを達成しようとしています:

ブースト ソリューション (ウェーブ用に保存) が存在する場合は問題ありません。

0 投票する
5 に答える
138 参照

javascript - Javascriptで関数であるプロパティが多いオブジェクトがある場合、どうやって(関数名の)文字列の配列に変換するのですか?

Javascript では、オブジェクトに関数である多くのプロパティがある場合:

では、これらの関数の名前の配列を取得するにはどうすればよいでしょうか? つまり、配列

ありがとう。

0 投票する
3 に答える
1272 参照

c++ - 文字列化されたテンプレート引数

テンプレート引数名の文字列化されたバージョンを取得することは可能ですか?

プリプロセッサを実行している場合のみ、次のようになります。

複製を編集します。テンプレート引数の文字列化はこちらをご覧ください

0 投票する
1 に答える
418 参照

php - Web ページで改行が保持されない

複数の contentEditable div を含む Web アプリの構築。ユーザーは div に何かを追加し、保存ボタンをクリックします。これにより、各 div のすべてのデータが json オブジェクトに保存されます。それはJSON.stringifyTEXT として mysql データベースに送られます (php 経由でアップロードされますmysql_real_escape_string())。ロードされるJSON.parseと、javascript に戻り、jquery が元の場所に戻されます。唯一の問題は、改行文字が置き換えられないことです。
これに対する簡単な修正はありますか?

0 投票する
3 に答える
542 参照

c - マクロの乱用による構造体の初期化

初期化する構造体がいくつかありますが、手動で行うのは面倒です。私はそれに役立つマクロを作成したいと思っています... しかし、Cプリプロセッサがこれに十分であるかどうかはわかりません。

メニューを表す構造体があります。それらは関数ポインターのみで構成されています。

これにより、関数と個別の関数を (.c ファイル) として記述できます。

およびメニューとして (.h ファイル):

メニュー定義を 1 つの定義に折りたたむ方法はありますか? MENU(blah, menu_frame_blah_button, NULL, menu_frame_blah_display, NULL)もちろん、拡張することもできますが、次の方法はありますか?

  • 短くする(NULLまたは何らかの名前)
  • ON_BUTTON(...);構造体の前の fromの必要性を取り除く

MENU(blah, button, NULL, display, NULL)理想的には、ハンドラーとメニュー構造自体の両方を定義したいと思います。たとえば、最後の項が に展開されないようにする方法がわかりませんON_SWITCH(NULL)

それとも、別の方法でアプローチする必要がありますか?

0 投票する
2 に答える
6307 参照

objective-c - プリプロセッサマクロ定義の値へのアクセス

GCC_PREPROCESSOR_DEFINITIONS(またはXCodeを使用する場合はプリプロセッサマクロ)の下にマクロ「FOO = bar」を追加した場合、「FOO」の値にアクセスするための最良の方法は何でしょうか。

現在、私は不器用なものを使用しています:

これは「バー」を出力します

確かに、より良い/よりクリーンな方法があるはずですか?

0 投票する
2 に答える
488 参照

c++ - Cプリプロセッサを理解しようとしています

これらのコードブロックが異なる結果をもたらすのはなぜですか?

いくつかの一般的なコード:

ケース1:

ケース2:

ケース3:

VS.net2005sp1のMSVC++を使用しています

編集:現在、マクロを展開するときにプリプロセッサが次のように機能すると信じています。ステップ1:-本文を取得します-##演算子の周りの空白を削除します-文字列を解析します。パラメーター:-##演算子の隣にある場合は、識別子をパラメーターのリテラル値(つまり、渡された文字列)に置き換えます。-##演算子の隣にない場合は、この説明プロセス全体を最初にパラメータの値を入力してから、識別子をその結果に置き換えます。(stringafyシングル'#'ケースatmを無視します)-すべての##演算子を削除します

ステップ2:-結果の文字列を取得し、マクロを解析します

さて、それから私は3つのケースすべてがまったく同じ結果の文字列を生成するはずだと信じています:

PART1PART2 *

したがって、ステップ2の後、結果は次のようになります。

動作します*

しかし、少なくとも同じ結果になるはずです。