ヘッダーファイルでの定義

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ゆう

ヘッダーファイルでの定義

#1

投稿記事 by ゆう » 13年前

現在、仕事で必要となり、C言語、C++を勉強しているのですが、あるヘッダーファイルに
次のような定義がされていました。ヘッダーファイルには宣言しかできないと思っていた
のですが、ヘッダーファイルに定義しても問題ないのでしょうか。

/* AAA.h */
typedef struct st_test{
int i;
int j;
}ST_TEST;

ST_TEST stData[] = { <----- 宣言と同時に定義??
{1, 1},
{2, 2},
{3, 3}
};

初歩的なことで申し訳ございませんが、
どうかご教授ください。よろいしくお願いします。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: ヘッダーファイルでの定義

#2

投稿記事 by softya(ソフト屋) » 13年前

1つのソースファイルにしかインクルードされていないならエラーにはならないと思います。
まぁ、ヘッダに分ける意味もないのですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: ヘッダーファイルでの定義

#3

投稿記事 by ISLe » 13年前

インクルードディレクティブ(#include)は、その場所に指定されたソースファイルを差し込むだけなので、ソースファイルに書けることなら何でも書くことができます。
複数のソースファイルでインクルードしたときにコンパイルエラーにならないように宣言しか書かないようにしているのであって、できないわけではないのです。

たかぎ
記事: 328
登録日時: 14年前
住所: 大阪
連絡を取る:

Re: ヘッダーファイルでの定義

#4

投稿記事 by たかぎ » 13年前

softya(ソフト屋) さんが書きました:1つのソースファイルにしかインクルードされていないならエラーにはならないと思います。
まぁ、ヘッダに分ける意味もないのですが。
大きな配列の初期化子を別のファイルに記述して、それをインクルードすることは普通にありますね。

閉鎖

“C言語何でも質問掲示板” へ戻る