連結プリプロセッサ演算子##を使用してcのマクロを理解しようとしましたが、トークンに問題があることに気付きました。私はそれが簡単だと思ったが、実際にはそうではない。マクロ連結内の有効なプリプロセッサトークン
連結は、2つのトークンを連結して新しいトークンを作成するためのものです。 例:私はそれを私は常に例えばpasting both argument does not give a valid preprocessor token.
が1aa
でfoo(1,aa)
結果を連結する理由というエラーを取得いくつかの引数を与えたときに(
と)
またはint
と*
を連結私は(
#define foo(x,y) x ## y
foo(x,y)
を試してみましたトークンの種類は?それはなぜ有効なのですか)、foo(int,*)
私はエラーが発生しました。
どのトークンが有効であるかを知る方法はありますか、それが私の心の中でどのように明確にできるかを理解するには良いリンクを張ることが可能ですか? (私はすでにグーグルでgoogled)
私は何が欠けていますか?
私は感謝します。
リンクを要求するのはトピック外です。そして、あなたが実際にそのエラーを引き起こすために渡したものを実際に示しているなら、あなたは助けを受けることができます。 – StoryTeller
私は '1aa'は有効な前処理トークンではないと思っています –
6つのトークンタイプには属しませんが、gccはそれについては何も警告しません。 – Sabrina