問題タブ [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 - ##プリプロセッサ演算子のアプリケーションと考慮すべき落とし穴は何ですか?
以前の質問の多くで述べたように、私はK&Rを介して作業しており、現在プリプロセッサを使用しています。より興味深いことの1つ、つまりCを学習しようとした以前の試みからは知らなかったことは、##
プリプロセッサ演算子です。K&Rによると:
プリプロセッサ演算子
##
は、マクロ展開中に実際の引数を連結する方法を提供します。置換テキストのパラメーターがに隣接している##
場合、パラメーターは実際の引数に置き換えられ、##
周囲の空白が削除され、結果が再スキャンされます。たとえば、マクロはpaste
その2つの引数を連結します。
#define paste(front, back) front ## back
したがって
paste(name, 1)
、トークンを作成しますname1
。
誰かがこれを現実の世界でどのようにそしてなぜ使うのでしょうか?その使用の実際的な例は何ですか、そして考慮すべき落とし穴はありますか?
c - Convert a preprocessor token to a string
I'm looking for a way to convert a preprocessor token to a string.
Specifically, I've somewhere got:
and I want to use it to prevent buffer overrun:
I'm open to other ways to accomplish the same thing, but standard library only.
c++ - マクロで使用できるトリックは何ですか?
従来のコードと最新のコードでは、マクロを使用してコード生成などの気の利いたソリューションを実行します。また、演算子#
と演算子の両方を使用し##
ます。
他の開発者がマクロを使用してクールなことを行う方法に興味があります。
jquery - jQuery オブジェクトを文字列に変換するにはどうすればよいですか?
jQuery オブジェクトを文字列に変換するにはどうすればよいですか?
perl - Perl出力にHASH(0xABCDEF)が表示されるのはなぜですか?
私はsun4-solaris-64int用に構築されたperl、v5.6.1を実行しています
配列でprintを呼び出しています:
出力は次のようになります。
または別の例:
出力:
どこHASH(0x2ece0)
から来たの?
c - 文字列を作成するためのCマクロ
代替タイトル(検索を支援するため)
- プリプロセッサトークンを文字列に変換します
- Cマクロの値からchar文字列を作成するにはどうすればよいですか?
元の質問
コンパイル時にC を使用してリテラル文字列を作成したいと思います。#define
文字列は、デバッグ、リリースなどのために変更されるドメインです。
私はこのようなことをしたいと思います:
しかし、プリプロセッサは「」内の何も評価しません
- これを回避する方法はありますか?
- これもいい考えですか?
objective-c - Mac OSX/iPhone の C プリプロセッサ、「#」キーの使用?
私はいくつかのオープンソース プロジェクトを見ていますが、次のようなものがあります。
サイズ記号の直前の「#」の意味は何ですか? それはC文字列のある種の接頭辞ですか?
visual-c++ - Visual-C++とgccのマクロ##連結演算子の違い
私はこのようなマクロを持っています(正確ではありませんが、関数はまったく同等です):
これはVisualC++では完全に機能しますが、gcc 3.4.5(MingGW)では次のエラーが発生します。
「。」を貼り付けます 「アイテム」は有効な前処理トークンを提供しません
これは、「->」演算子を使用した場合にも発生します。これらの演算子の使用が禁止されているという連結のヒントは見つかりませんでした。
誰かアイデアがありますか?
c++ - テンプレート引数の文字列化
C++でテンプレート引数を文字列化することは可能ですか? 私はこれを試しました:
しかし、私が得るのは でありT
、 ではありませんint
。プリプロセッサ マクロは、テンプレートのインスタンス化の前に評価されるようです。
これを行う他の方法はありますか?
テンプレートのインスタンス化後に前処理を行う方法はありますか? (コンパイラはVC++です)。
c - このCコードはどのように機能しますか?
a##b
&とは#a
?
このプログラムはどのように機能しますか?
出力は
今、私は方法a##b
と#a
働きを理解しています。しかし、2つのケース(1行目と2行目)で結果が異なるのはなぜですか?