タグ

externに関するyowanoのブックマーク (2)

  • C言語の正しいヘッダファイルの書き方 - saito’s blog

    最近、仕事でC言語での組み込み系の開発に携わっています。 開発中のコードを眺めていると、ヘッダファイル内にstatic関数のプロトタイプ宣言を記述していたり、ヘッダファイル内で不必要に他のヘッダファイルをインクルードしているなど、ヘッダファイルの書き方が分かっていないと思われる箇所が多々見られました。 実際、C言語の入門書でもヘッダファイルの書き方を詳しく説明しているものは、僕の知っている限りでは存在しないので、C言語を使っていてもヘッダファイルの正しい書き方を知らない人が少なくないのではないかと思われます。 そこで、このエントリでは、C言語のヘッダファイルの書き方について、僕が知っているテクニックをまとめてみました。 インクルードガードを書く ヘッダファイルファイルで他のヘッダファイルをインクルードしていると、いつの間にか同じヘッダファイルを2回インクルードしてしまうことがあります。 例

    C言語の正しいヘッダファイルの書き方 - saito’s blog
    yowano
    yowano 2013/09/10
    『staticグローバル変数をヘッダファイルに記述してしまうと、そのヘッダをインクルードしたソースごとに別々の変数の実体が作成されてしまう』など、駄目な理由を示しつつ、ヘッダの正しい書き方の解説。
  • C言語のファイルを分割するときにグローバル変数に「extern」を使って、多重定義を防ぐというものを聞いたのですが、いまいちよくわかりませ... - Yahoo!知恵袋

    C言語のファイルを分割するときにグローバル変数に「extern」を使って、多重定義を防ぐというものを聞いたのですが、いまいちよくわかりません。 C言語のファイルを分割するときにグローバル変数に「extern」を使って、多重定義を防ぐというものを聞いたのですが、いまいちよくわかりません。 まず一つ目は、ヘッダーファイル内で宣言されたグローバル変数がどのような扱いをされるのかということです。 私が考えた事は、 まず、グローバル変数をヘッダーファイルの中で定義して、それをソースファイルにインクルードしますよね。 つまり、そのソース内でそのグローバル変数が定義されていることになり、 そのソースの中で再びその変数を定義する必要はなく、そのまま使える、と思っていたのですが・・ エラーが出てしまいました>< その時のソースコードが以下の通りです。 // func.h #include <stdio.h>

    C言語のファイルを分割するときにグローバル変数に「extern」を使って、多重定義を防ぐというものを聞いたのですが、いまいちよくわかりませ... - Yahoo!知恵袋
    yowano
    yowano 2013/09/10
    あらゆる場所で使うグローバル変数をヘッダ内にまとめて定義し、複数ファイルでそのヘッダをincludeする際、変数の実体を一度だけ生成してそれ以外はexternとして処理するのを単一のヘッダで行う方法。
  • 1