質問

私は使用していることが全ての符号化の一つのCファイルです。しかし、私はプロジェクトに取り組んでいるのに十分な大きることになり非現実的です。私は#を含むようにとがっ走る場合には私は#を含むファイルを複数回。と聞いたのです。hファイルでもお使いいただくことによってその機能のはなぜ有する2つのファイルは1)です。

どの戦略を使用すれば良い組織化マコードについて教えてください。ができる"公"から"個"のものの特定のファイルとは何ですか?

この 質問析を行った。のです。hファイルがないのです。cファイルです。のコンパイラー"で知られる。hファイルに対応。cファイルとは何ですか?

役に立ちましたか?

解決

きています。hファイルとして インターフェイスファイル のおります。cファイルです。毎.cファイルを表すモジュールを一定量可能です。場合ました。cファイルの使用によるその他のモジュール(ます。cファイル)の機能を試作した。hインターフェイスファイル.を含むインターフェイスファイルにはオリジナルのモジュールです。cファイル毎です。cファイルに必要な機能を、この機能は使用できます。

だが必要な機能である。cファイルは他のモジュール)を宣言し、その範囲に対応します。ここにだけ呼び出すことができますから、cファイルで定義されます。

もこれと同じ変数に使用される複数のモジュールです。このヘッダファイルがその付いたキーワード'extern'.注意:のための機能をキーワード'extern"はオプションです。機能もを対象に行われているこextern'.

の含有ガードヘッダーファイルを含まない同一ヘッダーファイルに複数の倍。

例えば:

Module1.c:

    #include "Module1.h"

    static void MyLocalFunction(void);
    static unsigned int MyLocalVariable;    
    unsigned int MyExternVariable;

    void MyExternFunction(void)
    {
        MyLocalVariable = 1u;       

        /* Do something */

        MyLocalFunction();
    }

    static void MyLocalFunction(void)
    {
      /* Do something */

      MyExternVariable = 2u;
    }

Module1.h:

    #ifndef __MODULE1.H
    #define __MODULE1.H

    extern unsigned int MyExternVariable;

    void MyExternFunction(void);      

    #endif

Module2.c

    #include "Module.1.h"

    static void MyLocalFunction(void);

    static void MyLocalFunction(void)
    {
      MyExternVariable = 1u;
      MyExternFunction();
    }

他のヒント

を試みています。cに焦点を特定の領域可能です。利用の対応です。hファイルを宣言する者。

います。hファイルは'ヘッダーガード周辺のこの内容です。例えば:

#ifndef ACCOUNTS_H
#define ACCOUNTS_H
....
#endif

そのようにするべきである"。h"として多くのがいいと思いま、初めてで見られる特定の集大成ユニットでも快適にお過ごしいただけることを実際に引きにすることを決定しました。

コンパイラ

きの一例C'モジュールで このトピック -いますので、ご注意ファイルのヘッダーティーです。hのコードです。c.きを宣言するのを定義し、変数、関数のプロトタイプとしたいその他のプログラムへのアクセスのヘッダを表します。自主プロジェクトだ#includeことになるコードでアクセスの機能変数のティモジュールのヘッダを表します。

もう少し複雑になることである。使用している場合は、Visual Studioおよび多くの他のIdeを管理するビルド、それを無視すること-もの作成やリンクのオブジェクト。

リンカー

ときにコンパイルを別々のCファイルをコンパイラ生個々のオブジェクトファイルがメイン。cが主なものです。o、紅茶をお楽しみいただけます。cとなります。o。リンカーの仕事は眺めのすべてのオブジェクトファイル(メイン。o、紅茶をお楽しみいただけます。o)試合に参照で呼び出すときは、ティ機能をメインに、リンカーを変更する通話で、実際には、右の機能です。リンカーの実行可能ファイルです。

があり 大チュートリアル ることがより深このことに関して、どの範囲およびその他の問題だけ実行します。

幸運を祈っています。

-アダム

カップルの単純なルール開始

  1. な宣言をしたい"公共"のヘッダファイルに実行ファイルを作成する.
  2. のみを含むヘッダファイルのCファイルに必要とされる実施のためのCファイルです。
  3. などのヘッダファイルのヘッダファイルのみが必要な場合は、宣言の内ヘッダファイルです。

  4. の利用などのガードに記載の方法によりアンドリューまたは使用 #pragma一 の場合はコンパイラに対応していますので(も同じことが行われてい--時により効率的に)

答えによらのご質問

この 質問析を行った。の ティーです。hファイルがないの ティーです。cファイルです。のコンパイラの"知" る。hファイルには対応する .cファイルとは何ですか?

のコンパイラは主としてヘッダファイルです。各メソッドの呼び出しコンパイラの集約しながらソース(.c)ファイルオブジェクト(.o)ファイルです。裏(の make ファイルまたはプロジェクトファイル)コマンドラインと同等のこの生成される:

compiler --options tea.c

のソースファイル #includes"全てのヘッダファイルを資源としての参照は、どのようにコンパイラがヘッダファイルです。

なるだけで光沢付与えら詳細はこちら日本語、英語。いについて学ぶことがたくさん建Cます。)

どの回答が供給され、一つのスプリンティングアップコードをモジュール(別のファイル)である場合にはグローバル変数を制限できるのはその範囲は単一のモジュールの使用により、キーワードに'static'.(このまま適用する。なお、この利用に'static'とは異なるものですので使用中の機能です。

お問いことを明らかんできない状態で利用するかに深刻な開発。通常の場合には、そのコードは、一般的にはあまりにも大きくィをファイルです。良いルールをいただくことを分割機能への論理的なユニット(.cファイル)をそれぞれのファイルが含まれる必要がありませんでし簡単に頭。

ソフトウェア製品が出来上がったら、そこには一般的に次のものが含まれ、出力から多くの異なる。cファイルです。どこだって通常のコンパイラが生成多数のオブジェクトファイル(unixシステム".o"ファイル、VCを発生します。objファイル).この目的は"リンカー"を作成これらのオブジェクトファイルの出力は、共有ライブラリまたは実行ファイル).

一般的に実装(.c)ファイルを含む実際の実行可能コードのヘッダファイル(.h)を宣言の公的機実行ファイルです。できる非常に容易によりヘッダファイルが実行ファイルに、時にヘッダファイルを含むことができインラインコードします。

では一般的になかなか珍しい実行ファイルに含ます。良い練習がでの対応を確実に遂行するために実行ファイルに分離し、その懸念を表明したことを受けてその他のファイルです。

でおすすめダウンロードするソースのlinuxカーネルです。あなたは、Cプログラムが開催分野可能です。

きます。hファイルの定義に使用できるプロトタイプおます。する必要があることがわかりできますので、試作を必要とするのにはファイルの宣言せずに毎に機能する必要のある全て一つのファイルです。

例えば、イライラ #include <stdio.h>, このプロトタイプprintfその他のIOます。シンボルのためこれらの機能を正常に読み込むコンパイラがデフォルトです。お見ることができるシステムです。hファイルを/usr/includeについて興味のある方はもちろん通常のイディオム関わるこれらのファイルです。

場をご利用いただける文明の用途は多くの機能ではない本当に必要なmodularizeも出て論理的なグループ分けの手続きただし、開発の必要性に大きなシステム、そして必要な支払う配慮して定義しそれぞれの機能

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top