現在、仕事で必要となり、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: ヘッダーファイルでの定義
1つのソースファイルにしかインクルードされていないならエラーにはならないと思います。
まぁ、ヘッダに分ける意味もないのですが。
まぁ、ヘッダに分ける意味もないのですが。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: ヘッダーファイルでの定義
インクルードディレクティブ(#include)は、その場所に指定されたソースファイルを差し込むだけなので、ソースファイルに書けることなら何でも書くことができます。
複数のソースファイルでインクルードしたときにコンパイルエラーにならないように宣言しか書かないようにしているのであって、できないわけではないのです。
複数のソースファイルでインクルードしたときにコンパイルエラーにならないように宣言しか書かないようにしているのであって、できないわけではないのです。
Re: ヘッダーファイルでの定義
大きな配列の初期化子を別のファイルに記述して、それをインクルードすることは普通にありますね。softya(ソフト屋) さんが書きました:1つのソースファイルにしかインクルードされていないならエラーにはならないと思います。
まぁ、ヘッダに分ける意味もないのですが。