JPH06103080A - インクルードファイル取込方式 - Google Patents

インクルードファイル取込方式

Info

Publication number
JPH06103080A
JPH06103080A JP4249030A JP24903092A JPH06103080A JP H06103080 A JPH06103080 A JP H06103080A JP 4249030 A JP4249030 A JP 4249030A JP 24903092 A JP24903092 A JP 24903092A JP H06103080 A JPH06103080 A JP H06103080A
Authority
JP
Japan
Prior art keywords
include file
function
source program
file
load module
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP4249030A
Other languages
English (en)
Inventor
Toshiji Yoshida
利治 吉田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP4249030A priority Critical patent/JPH06103080A/ja
Publication of JPH06103080A publication Critical patent/JPH06103080A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【目的】 本発明は、コンパイル時にインクルードファ
イルを取り込むインクルードファイル取込方式に関し、
コンパイル時にソースプログラム中の関数についてテー
ブルを参照してインクルードファイルを取り込んでコン
パイルし、ソースプログラム中でインクルードファイル
の取り込みの記述を忘れてバグを発生させる事態を回避
すると共にデバッグ時間の短縮を図ることを目的とす
る。 【構成】 関数に対応づけてインクルードファイルを予
め登録したテーブル6と、ソースプログラム1中に記述
された関数について、テーブル6を検索して対応するイ
ンクルードファイルを取り出すインクルード検索モジュ
ール5とを備え、このインクルード検索モジュール5が
取り出したインクルードファイルを、当該関数のコンパ
イル時に組み込んでロードモジュールとするように構成
する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、コンパイル時にインク
ルードファイルを取り込むインクルードファイル取込方
式に関するものである。
【0002】
【従来の技術】従来、C言語のコンパイラは、ソースプ
ログラム中で標準関数(例えばSIN)を使用していた
場合、標準関数が定義されたファイル(インクルードフ
ァイル)をインクルードしない(取り込まない)と正し
いコンパイルができない。以下図5を用いて従来の構成
および動作を簡単に説明する。
【0003】図5は、従来技術の説明図を示す。図5の
(a)は、正しくコンパイルされる例を示す。図5の
(a)において、ソースプログラム21は、C言語で正
しく記述した例であって、取り込むインクルードファイ
ル“math.h”を定義した後、標準関数sinを使
用したコンパイル対象のソースプログラムである。
【0004】コンパイラ22は、C言語をコンパイルし
てロードモジュールを生成するものである。実行23
は、コンパイルしたロードモジュールの実行である。
【0005】この図5の(a)の場合には、ソースプロ
グラム21上でインクルードファイル“math.h”
を定義した後、その標準関数sinを使用しているの
で、コンパイル時にこのインクルードファイル“mat
h.h”を取り込んだロードモジュールを生成できる。
このコンパイルしたロードモジュールを実行23して正
しい値を得ることができる。
【0006】図5の(b)は、正しくコンパイルされな
い例を示す。図5の(b)において、ソースプログラム
31は、インクルードファイルの定義を忘れ、標準関数
sinを使用したコンパイル対象のソースプログラムで
ある。
【0007】この図5の(b)の場合には、ソースプロ
グラム31上でインクルードファイル“math.h”
の定義を忘れ、標準関数sinを使用しているので、コ
ンパイル時にこのインクルードファイル“math.
h”が取り込まれないロードモジュールを生成する。こ
のコンパイルしたロードモジュールを実行23するとイ
ンクルードファイルが組み込まれていないので、間違っ
た値が得られたりなどしてしまう。
【0008】
【発明が解決しようとする課題】最近のアプリケーショ
ンプログラムは巨大化してきており、これに伴って処理
を細かく細分化し、1つ1つのソースプログラムを小さ
くする傾向があり、その数が増してきている。この状況
で上述した従来のインクルードファイルの定義を行った
後、その標準関数を使用する手法を採用すると、以下の
問題が発生する。
【0009】(1) 1つ1つのソースプログラム中で
標準関数を使う度にインクルードファイルを指定する必
要が生じてしまい、記述が大変であるという問題があっ
た。 (2) 万一、インクルードファイルの指定を忘れた場
合、コンパイル時にエラーが発生せず、そのまま気が付
かない場合がある。そして、コンパイルしたロードモジ
ュールを実際に実行させたときに間違った値となった
り、あるいは異常となったりして初めて気がつくという
問題もあった。
【0010】本発明は、これらの問題を解決するため、
コンパイル時にソースプログラム中の関数についてテー
ブルを参照してインクルードファイルを取り込んでコン
パイルし、ソースプログラム中でインクルードファイル
の取り込みの記述を忘れてバグを発生させる事態を回避
すると共にデバッグ時間の短縮を図ることを目的として
いる。
【0011】
【課題を解決するための手段】図1を参照して課題を解
決するための手段を説明する。図1において、テーブル
6は、関数に対応づけた標準のインクルードファイルを
予め登録したテーブルである。
【0012】テーブル9は、関数に対応づけた利用者定
義のインクルードファイルを予め登録したテーブルであ
る。インクルード検索モジュール5は、ソースプログラ
ム1中に記述された関数について、テーブル6、9を検
索して対応するインクルードファイルを取り出すもので
ある。
【0013】
【作用】本発明は、図1に示すように、インクルード検
索モジュール5がソースプログラム1中に記述された関
数について、テーブル6を検索して対応するインクルー
ドファイルを取り出し、この取り出したインクルードフ
ァイルを、当該関数のコンパイル時に組み込んでロード
モジュールとするようにしている。
【0014】また、インクルード検索モジュール5がソ
ースプログラム1中に記述された関数について、コンパ
イルオプションフラグ8によって指示された標準のテー
ブル6あるいは利用者定義のテーブル9から対応するイ
ンクルードファイルを取り出し、この取り出したインク
ルードファイルを、当該関数のコンパイル時に組み込ん
でロードモジュールとするようにしている。
【0015】従って、コンパイル時にソースプログラム
中の関数についてテーブル6(あるいはテーブル9)を
参照して登録されている関数のときにそのインクルード
ファイルを取り込んでコンパイルすることにより、ソー
スプログラム中でインクルードファイルの取り込みの記
述を忘れてバグを発生させる事態を回避すると共にデバ
ッグ時間の短縮を図ることが可能となる。
【0016】
【実施例】次に、図1から図4を用いて本発明の実施例
の構成および動作を順次詳細に説明する。
【0017】図1は、本発明の1実施例構成図を示す。
図1において、ソースプログラム1は、コンパイル対象
のプログラムであって、ここでは、関数(例えばsi
n)を使用したプログラムである。
【0018】コンパイラ2は、ソースプログラム1をコ
ンパイルしてロードモジュールを生成するものであっ
て、ここでは、関数に対応するインクルードファイル
(関数を実行するために予め準備したロードモジュー
ル)を当該関数に組み込んでロードモジュールを生成す
るものである。
【0019】実行3は、コンパイラ2がコンパイルした
ロードモジュールを実行することである。正しい値4
は、コンパイルしたロードモジュールを実行3して得た
正しい値である。これは、ソースプログラム1中の関数
(例えばsin)についてテーブル6を参照してインク
ルードファイルを取り出し、これをコンパイラ2が当該
関数に組み込んでロードモジュールを生成するため、た
とえソースプログラム1中でインクルードファイルの定
義を忘れても当該インクルードファイルが自動的に取り
込まれるため、バグの発生などを防止できる。
【0020】インクルード検索モジュール5は、ソース
プログラム1中で使用された関数(例えばsin)につ
いて、テーブル6を参照してこの関数に対応するインク
ルードファイルを取り出すものである。
【0021】テーブル6は、関数に対応づけた標準のイ
ンクルードファイルを予め登録したテーブルである。例
えば関数“sin”に対応づけてインクルードファイル
“math.h”を登録したものである。
【0022】ファイル群7は、標準関数を予めコンパイ
ルしたインクルードファイルである。例えばインクルー
ドファイル“math.h”である。次に、図2のフロ
ーチャートに示す順序に従い、図1の構成の動作を順次
詳細に説明する。
【0023】図2において、S1は、文字列の後
に“()”があるか判別する。YESの場合には、C言
語であるこの“()”の前にある文字列が関数であると
判明(例えばsin(3.14)のうちのsinが関数
であると判明)したので、S2に進む。一方、NOの場
合には、S1を繰り返し行う。
【0024】S2は、検索した文字列がテーブル6にあ
るか判別する。YESの場合には、S3に進む。一方、
NOの場合には、テーブル6に関数が登録されていなか
ったので、他の処理を行う。
【0025】S3は、対応するインクルードファイル名
をさがす。例えば図1の場合には、関数“sin”につ
いて、テーブル6から関数“sin”に対応するインク
ルードファイル名“math.h”を探して取り出す。
【0026】S4は、ロードモジュール群の中からma
th.hを取り出す。これは、図1のファイル群7から
インクルードファイル名“math.n”のインクルー
ドファイルを取り出す。
【0027】S5は、コンパイラ2にmath.hを取
り出させる。S6は、コンパイルする。これは、S5で
取り出したインクルードファイル(例えばmath.
h)を、関数に組み込んでロードモジュールを生成す
る。
【0028】以上によって、ソースプログラム1から取
り出した関数について、テーブル6を参照してインクル
ードファイルを取り出し、これのインクルードファイル
を関数に組み込んでコンパイルし、ロードモジュールを
生成する。これにより、ソースプログラム1中でインク
ルードファイルの取り込みの定義を忘れてバグとならな
いようにすることが可能となる。
【0029】図3は、本発明の他の実施例構成図を示
す。これは、コンパイルオプションフラグ8、テーブル
(利用者定義)9およびファイル群10を新たに設けた
ものである。
【0030】図3において、コンパイルオプションフラ
グ8は、テーブル(標準)6あるいはテーブル(利用者
定義)9のいずれを使うかを指定するためのものであ
る。図中の状態では、ONと設定したテーブル(利用者
定義)9を使用し、該当するインクルードファイルを取
り出して関数に組み込み、コンパイルしてロードモジュ
ールを生成するようにしている。
【0031】テーブル(利用者定義)9は、利用者が定
義したテーブルである。ファイル群10は、利用者が定
義した関数のインクルードファイルを格納したファイル
群である。
【0032】次に、図4のフローチャートに示す順序に
従い、図3の構成の動作を詳細に説明する。図4におい
て、S11は、文字列の後に“()”があるか判別す
る。これは、ソースプログラム1中で“()”の前に文
字列があるか判別する。YESの場合には、“()”の
前の文字列があって関数と判明したので、S12に進
む。一方、NOの場合には、S11を繰り返し行う。
【0033】S12は、ソースプログラム中でコンパイ
ルオプションフラグ8がONか判別する。YESの場合
には、S13に進み、利用者定義のテーブル9を使用す
る。一方、NOの場合には、S14に進み、標準のテー
ブル6を使用する。
【0034】S13は、S12のYESでコンパイルオ
プションフラグ8がONであり、利用者定義の関数を使
う。即ち、図3でコンパイルオプションフラグ8がON
であって、利用者定義のテーブル9を使用し、ソースプ
ログラム1中で使用された例えば関数“sin”につい
て、当該テーブル9を参照して、利用者が予めコンパイ
ルしたインクルードファイル(例えばインクルードファ
イル“math.h2”)を取り出し、当該関数に組み
込んでコンパイルしてロードモジュールを作成する。
【0035】以上のS12のYES、S13およびS1
9によって、図3のテーブル(利用者定義)9を参照
し、ソースプログラム1中で使用された関数(例えばs
in)について、テーブル(利用者定義)9を参照して
インクルードファイル名“math.h2”を取り出
し、これのインクルードファイル“math.h”をフ
ァイル群10から取り出し、関数に組み込んでロードモ
ジュールを生成する。これにより、コンパイルオプショ
ンフラグ8をONにするのみで、同じ関数名であっても
利用者が予め作成してコンパイルしたインクルードファ
イルを組み込むことが可能となる。
【0036】S14は、S12のNOによってコンパイ
ルオプションフラグ8がOFFであったので、図3の標
準のテーブル6を使用することと判明したので、テーブ
ル6に文字列を検索に行く。
【0037】S15は、文字列ありか判別する。これ
は、S14で探しにいったテーブル6中に文字列があり
か判別する。YESの場合には、S16に進む。NOの
場合には、他の処理に進む。
【0038】S16は、対応するインクルードファイル
を探す。これは、例えば図3で関数“sin”につい
て、テーブル6を検索してインクルードファイル“ma
th.h”を探す。
【0039】S17は、ロードモジュール群の中からm
ath.hを取り出す。これは、図3のファイル群7か
らインクルードファイル“math.h”を取り出す。
S18は、コンパイラ2にインクルードファイル“ma
th.h”を取り出させる。
【0040】S19は、コンパイラ2が関数にインクル
ードファイル“math.h”を組み込んでロードモジ
ュールを生成する。以上によって、S12のNO、S1
4からS19によって、図3の標準のテーブル6を参照
してインクルードファイルを取り出し、これを関数に組
み込んでコンパイルし、ロードモジュールを生成する。
【0041】
【発明の効果】以上説明したように、本発明によれば、
コンパイル時にソースプログラム中の関数についてテー
ブル6(あるいはテーブル9)を参照して登録されてい
る関数のときにそのインクルードファイルを取り込んで
コンパイルする構成を採用しているため、ソースプログ
ラム中でインクルードファイルの取り込みの記述を忘れ
てバグを発生させる事態を回避することができると共
に、デバッグ時間の短縮を図ることができる。これらに
より、インクルードファイルを意識することなく、標準
関数をソースプログラム1中で記述することができ、取
り込みを忘れても、気が付きにくいバグを発生させるこ
とも無くなり、デバッグ時間を短縮できる。
【0042】また、コンパイルオプションフラグ8を設
け、標準関数と同じ名前で仕様の異なる関数を利用者が
新たに定義することもできる。
【図面の簡単な説明】
【図1】本発明の1実施例構成図である。
【図2】本発明のインクルードファイル検索フローチャ
ートである。
【図3】本発明の他の実施例構成図である。
【図4】本発明のインクルードファイル検索フローチャ
ートである。
【図5】従来技術の説明図である。
【符号の説明】
1:ソースプログラム 2:コンパイラ 3:実行 4:正しい値 5:インクルード検索モジュール 6:テーブル(標準) 7、10:ファイル群(ロードモジュールファイル群) 8:コンパイルオプションフラグ 9:テーブル(利用者定義)

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】コンパイル時にインクルードファイルを取
    り込むインクルードファイル取込方式において、 関数に対応づけてインクルードファイルを予め登録した
    テーブル(6)と、 ソースプログラム(1)中に記述された関数について、
    上記テーブル(6)を検索して対応するインクルードフ
    ァイルを取り出すインクルード検索モジュール(5)と
    を備え、 このインクルード検索モジュール(5)が取り出したイ
    ンクルードファイルを、当該関数のコンパイル時に組み
    込んでロードモジュールとするように構成したことを特
    徴とするインクルードファイル取込方式。
  2. 【請求項2】コンパイル時にインクルードファイルを取
    り込むインクルードファイル取込方式において、 関数に対応づけた標準のインクルードファイルを予め登
    録したテーブル(6)と、 関数に対応づけた利用者定義のインクルードファイルを
    予め登録したテーブル(9)と、 これらのうちのいずれのテーブル(6)、(9)を使用
    するかを任意に指定可能なコンパイルオプションフラグ
    (8)と、 ソースプログラム(1)中に記述された関数について、
    上記コンパイルオプションフラグ(8)によって指示さ
    れた上記いずれかのテーブル(6)、(9)を検索して
    対応するインクルードファイルを取り出すインクルード
    検索モジュール(5)とを備え、 このインクルード検索モジュール(5)が取り出したイ
    ンクルードファイルを、当該関数のコンパイル時に組み
    込んでロードモジュールとするように構成したことを特
    徴とするインクルードファイル取込方式。
JP4249030A 1992-09-18 1992-09-18 インクルードファイル取込方式 Pending JPH06103080A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP4249030A JPH06103080A (ja) 1992-09-18 1992-09-18 インクルードファイル取込方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP4249030A JPH06103080A (ja) 1992-09-18 1992-09-18 インクルードファイル取込方式

Publications (1)

Publication Number Publication Date
JPH06103080A true JPH06103080A (ja) 1994-04-15

Family

ID=17186963

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4249030A Pending JPH06103080A (ja) 1992-09-18 1992-09-18 インクルードファイル取込方式

Country Status (1)

Country Link
JP (1) JPH06103080A (ja)

Similar Documents

Publication Publication Date Title
US6954747B1 (en) Methods for comparing versions of a program
US6961931B2 (en) Dependency specification using target patterns
US7178135B2 (en) Scope-based breakpoint selection and operation
US7080360B2 (en) Breakpoint safety net
JPH0792758B2 (ja) コンパイラおよびコンパイル方法
JPH06103080A (ja) インクルードファイル取込方式
CN114816437A (zh) 一种逆向生成Java实体类的方法、系统和设备
GB2420638A (en) Method of substituting code fragments in Internal Representation
JPH07311679A (ja) プログラム作成システム
JPH0581069A (ja) プログラムのデバツグ方法
JPS61147336A (ja) ロ−ドモジユ−ルの世代管理方式
JPH04287134A (ja) 簡易トレース情報取得方式
JP3139393B2 (ja) デバッグ装置
JP2002082811A (ja) コンパイル方法および記録媒体
JP2001125793A (ja) コンパイラシステム及びコンパイル方法並びに記録媒体
JP2002073347A (ja) 例外処理方法及びコンパイラ
JPH11327887A (ja) 自動部品化機能付コンパイラシステムおよび記録媒体
JPH0250731A (ja) コンパイル装置
JPH05224910A (ja) プログラムリビジョン管理方法
JPH0359726A (ja) プログラム単位一括翻訳方式
JPH0695868A (ja) ソフトウェア管理方式
JPH04107605A (ja) 制御プログラム用言語処理装置
JPH0588879A (ja) プログラム開発支援システム
JPH0588872A (ja) プログラム構造図作成処理システム
JPH0721014A (ja) プログラムリンク方式

Legal Events

Date Code Title Description
A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20010213