2009-05-13 13 views
1

でコードを生成しました。特定のクラスでは、カバレッジツールはソースコード内に実際に存在するものより2/3余分な機能を示します。コンパイラは、私はG ++コンパイラを使用して、Linux上でのインテルコード・カバレッジ・ツールを使用していますコードカバレッジ

これらの追加機能は何ですか?彼らはコンパイラ生成関数ですか?

私は、コードカバレッジからヘッダファイルを除外しています。 私のクラスは、ctorとdtorが空のシンプルです。

私は、次のような機能は、コンパイラによって生成されていると思います。

  1. マクロコピーコンストラクタ
  2. 代入演算子
  3. (未私の場合)
  4. シグナルスロット接続メカニズム(例えばでQtのmocのコンパイラこれらを生成)
+1

あなたが見ている関数名のいくつかの例を挙げると有益でしょう。 –

+0

I 1/2は、ctorに_zn記号を付けて機能します。しかし、時々私はこれらの余分な報告された機能を見ることができません。 –

+0

私はのようなものを考えていた - フル機能名のリストと、好ましくはクラス宣言で「クラスYAXのために、私は以下の追加機能を参照してください」。 –

答えて

1

このblog entry(に関しGDBを使ったデバッグ)では、なぜ「余分な」コンストラクタが表示されるのかが説明されています。

GCCは、コンストラクタのための2つの別個の機能体を生成します。 1つは、すべてのベースを含む、オブジェクト全体を構成する通常のものです。もう1つは、仮想基本クラスを除いてすべてを構築します。それが起きると、gccは仮想ベースをまったく持たないクラスに対しても両方のコンストラクタを発行します。

関連する問題