(57)【特許請求の範囲】
【請求項１】
Ｃ言語で記述された第１のソースコードをコンパイルして得られた第１のオブジェクトと、Ｃ＋＋言語で記述された第２のソースコードをコンパイルして得られた第２のオブジェクトとをリンク可能とするために、前記第１のオブジェクトに含まれる第１のシンボル名を置き換えるシンボル名置き換え装置であって、
前記第１のシンボル名と該第１のシンボル名の型情報とを対応付けて記憶する記憶手段と、
前記第１のシンボル名に基づき前記記憶手段を検索して前記型情報を前記記憶手段から抽出する抽出手段と、
抽出された前記型情報をＣ＋＋言語の型情報を示す記号に変換する変換手段と、
変換されたＣ＋＋言語の型情報を示す記号と前記第１のシンボル名とを組み合わせて第２のシンボル名を生成する生成手段と、
前記第２のシンボル名で前記第１のシンボル名を置換する置換手段と、
を備えたことを特徴とするシンボル名置き換え装置。
【請求項２】
コンピュータを、請求項１記載の記憶手段、抽出手段、変換手段、生成手段及び置換手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、Ｃ言語のシンボル名をＣ＋＋言語のシンボル名に置き換えるシンボル名置き換え装置に関する。
【０００２】
【発明の背景】
Ｃ（Ｃ言語）はシステム記述用の言語としてＵＮＩＸと共に発展してきた言語であり、豊富な演算子とデータ型及び構造化プログラミングに適した制御構造を持つ特徴から、様々な分野で多くのプログラム開発に利用されてきた。一方、Ｃ＋＋（Ｃ＋＋言語）は、Ｃ言語をオブジェクト指向対応に改良した新しい言語であり、多くの点でＣ言語と共通するが完全互換ではない。例えば、演算子やデータ型などの基本構造は保たれているものの、コンパイル後のシンボル（変数、定数又は関数を示すユーザ定義名）に違いがある。
【０００３】
今、整数型（ｉｎｔ）の変数ａをＣ言語とＣ＋＋言語でソースリストに記述したとすると、どちらも、
ｉｎｔ  ａ    ………（１）
と表記（初期値は省略）されるが、これをＣコンパイラでコンパイルすると、
＿ａ        ………（２）
となり、Ｃ＋＋コンパイラでコンパイルすると、
＿△＿ａ    ………（３）
となる。ここで、＿（アンダーバー）ａはシンボル、＿△は整数型を表わす記号である（但し△は便宜的な記号）。（２）と（３）の違いは型情報の有無にある。型情報はオブジェクト指向における属性（プロパティ）の一つであり、かかる属性の引き継ぎはオブジェクト指向の基本原則である。したがって、（２）と（３）の違い（型情報の有無）は専らオブジェクト指向対応であるか否かによるものである。
【０００４】
【従来の技術】
Ｃ＋＋言語でシステムを開発する場合、すべてのモジュールを新たに作るのは無駄である。Ｃ言語で作られた評価済の膨大なモジュールがすでに存在しているからである。
図２は、Ｃ言語で作られたプログラムをＣ＋＋言語のプログラムにリンクする場合の簡単な例である。図において、「ｉｎｔ  ａ」は整数型のａというシンボルを表わしている。このシンボルをリンクするには、Ｃ＋＋側に特別な仕様を適用しなければならない。図中の「ｅｘｔｅｒｎ  “Ｃ”」という表記がそれである。Ｃ＋＋言語のプログラムにこの表記を書き込めば、Ｃ言語で作られた評価済の膨大なモジュールを利用でき、開発効率を大幅に改善できる。
【０００５】
【発明が解決しようとする課題】
しかしながら、かかる従来の方法にあっては、Ｃ＋＋側にいちいち特別な表記を書き込む必要があり、面倒であるばかりか、記入忘れなどのケアレスミスを避けられず、開発効率を改善できるものの、システムの信頼性を向上できないという問題点があった。
【０００６】
そこで、本発明は、Ｃ＋＋側にいちいち特別な表記を書き込む必要がなく、システムの信頼性向上に寄与する技術の提供を目的とする。
【０００７】
【課題を解決するための手段】
本発明は、Ｃ言語のシンボル名をＣ＋＋言語のシンボル名に置き換える装置であって、Ｃ言語のシンボル名から型情報を抽出する抽出手段と、抽出された型情報をＣ＋＋言語の型情報の記号に変換する変換手段と、変換されたＣ＋＋言語の型情報の記号と前記Ｃ言語のシンボル名とを組み合わせてＣ＋＋言語のシンボル名を生成する生成手段と、生成されたＣ＋＋言語のシンボル名を前記Ｃ言語のシンボル名に置換する置換手段と、を備えたことを特徴とする。
【０００８】
本発明では、Ｃ言語のシンボル名を与えると、そのシンボル名から型情報が抽出され、その型情報がＣ＋＋言語の型情報の記号に変換されると共に、その記号と前記Ｃ言語のシンボル名とが組み合わされてＣ＋＋言語のシンボル名が生成された後、生成されたＣ＋＋言語のシンボル名が前記Ｃ言語のシンボル名に置き換えられる。したがって、Ｃ言語のシンボル名がＣ＋＋言語のシンボル名に置換されるため、Ｃ＋＋側にいちいち特別な表記を書き込むことなく、Ｃ言語のシンボルをリンクできるので、システムの信頼性向上を図ることができる。
【０００９】
【発明の実施の形態】
以下、本発明の実施例を図面に基づいて説明する。
図１は本発明に係るシンボル名置き換え装置の一実施例を示す図である。
図１において、１はＣ言語で記述されたソースリストであり、リスト内には便宜例として整数型（ｉｎｔ）の変数ａが初期値０で宣言されている。２はリスト１をコンパイルして生成されたモジュールの一部であり、Ｃコンパイラ３では既述のとおりシンボル名（この例では変数ａ）の頭にアンダースコア（＿）を付して表記される。
【００１０】
４はシンボル名の型情報を抽出する型情報抽出手段（抽出手段）である。この型情報抽出手段４は、例えば、Ｃコンパイラ３のデバッグオプションを使用することができる。公知のＣコンパイラ（例えばｆｃｃ９１１：富士通（株）製ＦＲファミリ用最適化Ｃコンパイラのコマンド名）のデバッグオプションには、図示のように、コンパイルされたシンボル名（＿ａ）、元のシンボル名（ａ）及び型情報（ｉｎｔ）などを収集できる機能が備えられているからである。５は型情報を含むデバックテーブルであり、型情報抽出手段４によって生成されたものである。なお、６はワーキングレジスタ（生成手段、置換手段）、７は変換テーブル（変換手段）であり、前者はＣ＋＋言語のシンボル名を生成するための一時的な作業領域、後者は、Ｃ＋＋言語のすべての型情報と各型情報に対応した記号とをテーブルマップ化したものである。
【００１１】
このような構成において、まず、ソースリスト１内のシンボルは、Ｃコンパイラ３によってコンパイルされ、さらに、型情報抽出手段４によってその型情報（ｉｎｔ）が取り出される。そして、▲１▼デバッグテーブル５内の型情報を用いて変換テーブル７が検索され、▲２▼その型情報に一致するＣ＋＋言語の記号（＿Ｖｏ）が取り出されてワーキングレジスタ６の所定位置（中央）にセットされる。次いで、▲３▼▲４▼ワーキングレジスタ６の先頭と後尾に、コンパイルされたシンボル名（＿ａ）がセットされた後、▲５▼先頭のシンボル名を用いてモジュール２が検索され、モジュール２内の一致するシンボル名が、ワーキングレジスタ６の中央と後尾の記号を連結したもの（＿Ｖｏ＿ａ）で置き換えられる。
【００１２】
したがって、この構成によれば、Ｃコンパイラ３によって生成されたモジュール２内のシンボル（Ｃ言語のシンボル）が、Ｃ＋＋言語のシンボルに置き換えられるから、例えば、Ｃ言語で作られた評価済の膨大なモジュールにこの装置を適用すれば、コンパイル済のすべてのシンボルに型情報を持たせることができ、Ｃ＋＋プログラムとの互換性を確保できる。その結果、Ｃ＋＋言語のプログラム側に特別な仕様を施すことなく、既存のＣ言語資産を有効に活用することができ、開発効率の改善と信頼性の向上を共に達成することができる。
【００１３】
なお、本実施例のシンボル名置き換え装置は単体であってもよく、又はリンケージエディタやアセンブラ若しくはＣコンパイラに組み込まれたものであってもよい。また、リンケージエディタやアセンブラ若しくはＣコンパイラなどは、記憶媒体に収められたプログラムの形で配布されるから、本実施例のシンボル名置き換え装置も、単体又はこれらのプログラムと一緒に、フロッピィディスク、ＭＯ、ＣＤ−ＲＯＭ、メモリカード、ＲＯＭチップ、固定記憶装置（ハードディスク）などの記憶媒体に収められたものであってもよい。
【００１４】
【発明の効果】
本発明によれば、Ｃ言語のシンボル名がＣ＋＋言語のシンボル名に置換されるため、Ｃ＋＋側にいちいち特別な表記を書き込むことなく、Ｃ言語のシンボルをリンクでき、システムの開発効率と信頼性を共に向上できる。
【図面の簡単な説明】
【図１】一実施例の概念図である。
【図２】従来例の概念図である。
【符号の説明】
４：型情報抽出手段（抽出手段）
６：ワーキングレジスタ（生成手段、置換手段）
７：変換テーブル（変換手段）
【図１】
0004033952.tif 000002
【図２】
0004033952.tif 000003