問題タブ [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 投票する
5 に答える
12723 参照

objective-c - Objective-C 文字列リテラルへのプリプロセッサ マクロ値

ビルド設定で定義されたプリプロセッサ マクロがあります

その値を、メソッドに渡すことができる Objective-C の文字列リテラルに変換したいと考えています。次の #define は機能しませんが、私が達成しようとしていることを示す必要があります。

どういうわけか明らかなものが欠けているだけだと思いますが、必要なものを取得するための適切なプリプロセッサブードゥーを見つけることができないようです。

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

macros - 無効な文字ストリームマクロ

次のプリプロセッサマクロ:

実際には有効ではありませんC ; 大まかに言えば、その理由は、プリプロセッサがトークンのストリームで動作するように定義されているのに対し、上記は文字のストリームで動作することを前提としているためです。

一方、残念ながら、上記は実際にはMicrosoftヘッダーファイルで発生するため、とにかく処理する必要があります。(私はプリプロセッサの実装に取り​​組んでいます。)

人々が実際に遭遇した他のケースは、レガシーコードであるかどうか、そのコードがまだ使用されている限り古いものであるかどうか、実際には有効ではないが、文字を使用するコンパイラで記述されているため、とにかく動作するプリプロセッサマクロです。指向のプリプロセッサ実装?

(理論的根拠:適切でクリーンな標準準拠のトークン指向の実​​装を作成した場合、ハッキングする必要のある特殊なケースの数を事前に把握しようとしています。)

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

c - ##連結の前にプリプロセッサトークンを評価する

トークンを他のものと連結する前に評価したいと思います。「問題」は、標準が動作を次のように指定していることです。

置換リストを再検査して置換するマクロ名を増やす前に、置換リスト内の##前処理トークンの各インスタンス(引数からではない)が削除され、前の前処理トークンが次の前処理トークンと連結されます。

したがって、次の例では、

最後の宣言はに展開されます

ではなく

私がしたいように。これを生成するマクロを定義する方法はありますか?マクロの最初のセットはそうですが、プレフィックスの重複を避け、これを一度だけ定義したいと思います。では、プレフィックスを設定して#define、マクロにそれを使用させることは可能ですか?

0 投票する
8 に答える
169 参照

c - Cプリプロセッサで変数を読み取る

Cプリプロセッサで連結を使用しようとすると、次の問題が発生します。

プリプロセッサが単に「vari」を連結するのではなく、「i」の値を読み取ることができる方法はありますか?

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

gcc - 変数値の文字列化

質問: 上記のマクロを定義して、GCC で文字列を出力するにはどうすればよいですか?

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

regex - 引用符で囲まれた正規 (qr) 式に修飾子を追加する方法

「i」などの正規表現修飾子を引用符で囲まれた正規表現に追加する簡単な方法はありますか? 例えば:

私が考えることができる唯一の方法は、print "$pat\n"戻って置換(?-xism:F(o+)B(a+)r)で「i」を削除しようとすることです?-xism:

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

c - マルチレベルマクロ呼び出しでのマクロ引数の文字列化

私はこのようなマクロを持っています:

できます:

これは期待どおりに印刷FOO+BAR=579されます。

ここで、SHOW_EXPRを呼び出すマクロを定義しようとしています。

Look ma, 123+BAR=579これも期待通りに印刷されますが、これは私が望んでいることではありません。

正しいことをするようにMY_SHOW_EXPRを定義することは可能ですか?

(実際のマクロは、ここに示されているよりも少し複雑です。マクロが悪であることはわかっています。)

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

c++ - 引数に展開される C/C++ マクロ、文字列としての引数

エンジニアリング仕様書の要​​素と同じ名前の変数がたくさんあるので、文字列バージョンの名前も役に立ちます。

私は次のようなマクロをよく使用しています。

一般的な使用法は次のとおりです。

私の質問は 3 つあります。

  • これを行うより良い方法はありますか?
  • Boost または他のライブラリで同様のマクロを利用できますか?
  • そうでない場合、どうすればこれを改良して名前を変更し、明確で有用なものにすることができますか?

編集 上記は最小限の例であると言うべきでした。関数には他のパラメーターが含まれる場合があり、名前付きエンティティはデータ メンバーである場合もあれば、関数自体である場合もあります。

私が C++ 用に検討しているもう 1 つの拡張機能はNamedRef、マクロの内容を受け取ることができるクラスです。

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

c - 定数をasmコードブロックに貼り付ける

私はこのCマクロを持っています:

整数で呼び出すとうまく機能します。

しかし、私がこのようなことをするとき:

このエラーが発生します:

エラー:命令syscallには絶対式が必要です

これを回避するにはどうすればよいですか?コードに魔法数を散らかしたくありません。

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

c - cmd行から-D値を文字列にする方法は?

私はトリッキーな問題に直面しています。コンパイラのコマンドラインに従ってCソースファイルのコンテンツを偽造したいのですが。例(VCを使用):

コマンドラインを使用する場合

実際の Cコンテンツを取得したい(前処理後):

コマンドラインを使用する場合

実際のCソースファイルの内容を取得したい:

今解決策を見つけています...

初挑戦:

-運がない。コマンドラインでどのfooが定義されていても、私は常に

2番目の試み(私がイメージできる最も近いが、それでも冗長):

今回は、コマンドラインを詳細に変更する必要があります。

今私は得る

この冗長性から私を助ける方法はありますか?

ちなみに、私はコマンド引数に引用符を導入するのは本当に好きではありません(argv[x]WindowsCMDとLinuxBashでそのようなコマンドラインを確実かつ移植可能に書くことができないため、引用符をの一部にするのは好きではありません-私は思います。