🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fj.lang.c
Article #550

Re: 標準ライブラリー関数の定義はどこに ?

#550
From: FUJIHARA Keiichi
Date: Tue, 31 Mar 1998 00:00
56 lines
3007 bytes

 藤原と申します

In article <sp4049tk.98Mar3110130@kisokou10.ex.ecip.osaka-u.ac.jp>
  sp4049tk wrote on 31 Mar 98 10:01:30 +0900

>
>わたしの環境では、
>
>main() /*printf()の宣言をしない。*/
>{
>    printf("hello");
>}
>
>とやってもコンパイル、実行出来ますが、
>これは環境が特殊でからでしょうか?
>コンパイラー自身がこの関数を知っているように思えるのですが、、、

 コンパイラ自身は「知らない」ので、適当に(引数をスタックに積んで、
printf という関数をとにかく「呼ぶ」という)処理をします。
 あとは、たまたま、標準ライブラリに(コンパイル済みの) printf の
実体があるので、「リンカ」がつじつまをあわせてくれます。


>> 
>> ではためしに「printf()」の代わりに「foo()」という、ライブラリー関数に「ない」
>> 名前の関数でやったら、どういうエラーが出るのか確認してみてください。
>> 
>> 注意すべきなのは、「そのエラーメッセージには行番号がついているかどうか」です:)
>> 
>この考え方面白いですね。
>行番号がついていないことに注目するわけですか。

 どんなエラーが出るか確かめて、「行番号のついていない」のは、リンカが
出したエラーです。言い換えるとコンパイラは、foo() という関数を呼んでも
(ライブラリ関数ではないから知っているはずはないのに)エラーもなにも出さない
というわけです。

>> 「リンカー」とか「ローダー」っていう言葉を聞いたことないですか?
>> (英語だとそれぞれ「linker」、「loader」)
>> 
>一応知ってます。

 だから、「コンパイルできて実行できる」としても、
「コンパイラ自身が知っている」のでははなく、
「リンカがちゃんと探して来てくれる」から、実行できるわけです。

-- 
【プロバイダ変更にともない、メールアドレスが変わりました】
 旧 erika@apionet.or.jp は98年3月末日まで存続の予定です。

-----------> FUJIHARA Keiichi is *not* a female but ... <-------------
E-Mail: erika@may.email.ne.jp --  URL: (現在移行作業中)
E-Mail: kfujiha@anet.ne.jp
----------------------------------------------------------------------
Technical Details
Message-ID: <6fqlgg$1dv6$1@neptune.asahi-net.or.jp>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <sp4049tk.98Mar28191830@kisokou05.ex.ecip.osaka-u.ac.jp> <1998Mar28.111741.5702@merope.opus.or.jp> <sp4049tk.98Mar3110130@kisokou10.ex.ecip.osaka-u.ac.jp>

Show Full Headers
Complete Article Headers
X-Google-Language: Japanese,JIS
X-Google-Thread: 106434,419345b2de002f4a
X-Google-Attributes: gid106434,public
From: erika@may.email.ne.jp (FUJIHARA Keiichi)
Subject: Re: 標準ライブラリー関数の定義はどこに  ?
Date: 1998/03/31
Message-ID: <6fqlgg$1dv6$1@neptune.asahi-net.or.jp>
X-Deja-AN: 339441810
X-Posting-Software: WSNews 2.01beta1
References: <sp4049tk.98Mar28191830@kisokou05.ex.ecip.osaka-u.ac.jp> <1998Mar28.111741.5702@merope.opus.or.jp> <sp4049tk.98Mar3110130@kisokou10.ex.ecip.osaka-u.ac.jp>
Content-Type: text/plain; charset=ISO-2022-JP
X-Complaints-To: ap-net@asahi-net.or.jp
X-Trace: neptune.asahi-net.or.jp 891345232 47078 (None) 202.213.157.158
Organization: OMRON Kurayoshi (through Asahi-net)
Mime-Version: 1.0
Reply-To: FUJIHARA Keiichi <erika@may.email.ne.jp>
Newsgroups: fj.lang.c