8

この質問では:

コンパイル時にテンプレートの型名を出力する

典型的な C++ コンパイラがコンパイル時に型の名前を出力する方法について、いくつかの提案があります。ただし、コンパイル エラーのトリガーに依存しています。

私の質問:コンパイルを停止せずに C++ コンパイラに型の名前を出力させることはできますか?

一般に、答えは「おそらくない」です。有効なプログラムは、どこにも出力せずにターゲット オブジェクトにコンパイルできるため、プリプロセッサ ディレクティブ、コンパイラ ビルトイン、または任意のコンパイラを使用して、GCC と clang について具体的に尋ねています。固有のトリック。

ノート:

  • 明らかに、課題は、using/typedefステートメント、テンプレートパラメーター値、可変個引数テンプレートなどの背後にある型を出力することです。型が明示的に使用可能な場合は、#message "my type is unsigned long long"(@NutCracker が提案したように) のようなものを使用できます。しかし、それは質問の目的ではありません。
  • C++11 以前に依存する回答は、C++14/17/20 を要求するよりも優先されます。
4

3 に答える 3

1

gcc と clang は、解析からコード生成まで、さまざまな段階でほぼすべてを実行できる独自のプラグインを使用するためのインターフェイスを提供します。

インターフェイスはコンパイラ固有であり、gcc のプラグインを clang に使用したり、その逆に使用したりすることはできません。

ドキュメントは分厚く、ここで詳しく説明する機会はないので、gcc と clang のドキュメントのみを紹介します。

gcc プラグイン clang プラグイン

于 2020-02-13T12:02:47.897 に答える