ページの先頭行へ戻る
Interstage Application Server アプリケーション作成ガイド(CORBAサービス編)

11.3.1 #include文

  IDLファイルで#include文を使用して他のIDLファイルをインクルードし、IDLコンパイラ(IDLc)でコンパイルすると、生成されたソースにインクルードしたIDLファイルの定義を含むことができます。しかし、複数のIDLファイルから同一のIDLファイルをインクルードしていると、同一の定義がそれぞれのスタブ・スケルトンに生成されるため、リンケージ時にリンクエラーが発生します。
  #include文を含むIDLファイルのコンパイルについて、下図に示します。



  複数のIDLファイルから同一のIDLファイルをインクルードしている際に発生するリンクエラーを防止する対策として、IDLコンパイラ(IDLc)の-noincludeオプションを用います。これにより#include文で定義されたIDLファイル(以降、インクルードファイルという)を展開しないため、スタブ・スケルトンの生成時には、ヘッダ定義として“#include XX.h”(IDLファイル名をXX.idlとする)だけが記述されます。なお、インタフェースリポジトリには、IDLコンパイラ実行時に指定されたIDLファイルの情報だけが登録され、インクルードファイルの情報は登録されません。
  -noincludeオプションを指定しない場合と指定した場合のマッピング結果を下図に示します。



-noinclude機能を使用するケース

  -noincludeオプションを指定することで、以下の多重定義を避けることができます。


(1) マッピングする場合

(2) インタフェースリポジトリに登録する場合