ここから本文です

インクルードファイルとライブラリの違いは? MQL4における、インクルードファ...

pro********さん

2019/2/1302:59:21

インクルードファイルとライブラリの違いは?

MQL4における、インクルードファイル(ヘッダーファイル)とライブラリの違いは何なのですか?

インクルードファイルによく使う関数(例えば発注など)を格納しておいて、それをソースコードで呼び出せるようにしておけばソースコードの見栄えがスッキリして見やすいし書くのが楽ということですよね。ならば、ライブラリとは何のためにあるのですか?

別のサイトでは「インクルードファイルには関数の宣言を箇条書き?し、その処理内容はライブラリに書き込んでおく」と見かけましたが本当にそうなのですか?
インクルードファイルの例で処理内容までコーディング書いてるものをあるサイトで見たことあるのですが。
頭がこんがらがっております。MQLもしくはC言語お詳しい方、どうか両者の違いを教えてください。

閲覧数:
75
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

her********さん

2019/2/1308:02:17

MQL4はよく知りませんが、C言語では
ヘッダファイルに関数を書くのは、
よく初心者がやります。
ひとつのCソースファイルしか使わない場合、
どこに書いても同じなので、ヘッダファイルに書く人も居ます。
有名どころでは、tcc というコンパイラのソース。
ただし、たしかCのファイルをincludeしていた気がしますが。

普通は、複数のソースファイルから呼び出すよく使う関数は、
同じヘッダファイルを呼び出すと各ソースファイル中に関数が出来てしまい
複数の場所で同じ名前の関数が出来るため多重定義でエラーになります。

関数を static にすると、リンク時に名前が残らないので
多重定義にはなりませんが、同じ内容の関数が複数出来てしまいます。

ただし、inline static の関数を作れば、
ソースの中にインライン展開してくれるので、実体が残りません。
inline static な関数はヘッダファイル中でよく定義されます。
(inline がC言語で正式にサポートされているかはよく知りませんが多くのコンパイラで使えます。)
小さい関数の場合、インライン展開してもあまり大きくならないので、
関数呼び出しする手間を考えると inline static 関数にする事が多く有ります。

ほかに、関数では有りませんが、
#define で、関数みたいな見掛けの定義をする事があります。

  • 質問者

    pro********さん

    2019/2/1323:04:55

    回答ありがとうございます。
    初歩的な質問なのですが、

    関数の定義↓
    型 関数名(引数)
    {処理;
    }

    関数の宣言↓
    型 関数名(引数);

    であっているでしょうか?
    その場合、ヘッダーファイルには
    関数の定義をいくつも書いて収納していくのですよね?
    であれば、ライブラリは何のために存在するのですか?

  • その他の返信(3件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

min********さん

2019/2/1303:53:04

通常CやC++は関数やクラスの宣言はヘッダーファイル(.hや.hhの拡張子)に記述し、その処理内容はソースファイル(.cや.ccの拡張子)に記述します。

include構文で読み込むファイルはヘッダーファイルです。

また、ライブラリとはよく使う処理を関数群やクラス群として複数まとめたもので、代表的なもので言えば"stdlib.h"や"iostream"なんかがライブラリに該当します。

これらは標準ライブラリと呼ばれ、printfやcoutのような非常によく使う関数がまとめられています。

なのでまとめると、インクルードファイル=ヘッダーファイルで、ライブラリはヘッダーファイル+ソースファイルの処理として完結したものということになります。

中身がなければライブラリとして役に立ちませんからね。

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる