プログラムのコンパイル中には、次の 3 つの主要な段階があります。
- 前処理 ( 、 などはすべて
#include置き換え#defineられます) - コンパイル (オブジェクト ファイルの生成)
- リンク (オブジェクト ファイルは実行可能ファイルにリンクされます)
に関する私の質問typedefです。前処理されたファイル出力でわかるように、型指定されたtypedefed は実際の型に置き換えられません。
それはいつ起こりますか?すでに置き換えられたタイプを取得することは可能ですか?
プログラムのコンパイル中には、次の 3 つの主要な段階があります。
#include置き換え#defineられます)に関する私の質問typedefです。前処理されたファイル出力でわかるように、型指定されたtypedefed は実際の型に置き換えられません。
それはいつ起こりますか?すでに置き換えられたタイプを取得することは可能ですか?
短い答え: コンパイル中。
typedefコンパイラによって評価され、理解される構造であるため、コンパイラは、tyedef されたデータを元の型として処理するために必要なコードを発行するものです。私の知る限り、それがどのように行われるかは、未指定ではなく実装で定義されています。しかし、必要なことはすべて実行します。
前処理されたファイル出力でわかるように、型定義された typedef は実際の型に置き換えられません。
いいえ、そうではありません。タイプの単なるエイリアスであるためです。
それはいつ起こりますか?すでに置き換えられたタイプを取得することは可能ですか?
これは実装の詳細ですが、コンパイルには typedef が必要なため、コンパイル プロセスで実行されます。コンパイラまたはプリプロセッサを使用して実際の型を取得することはできません。唯一の方法は、手動で置き換えるか、コードを調べることです。