フォーラム: ヘルプ (スレッド #24927)

ヘッダファイルの記述について (2009-12-25 00:12 by toru-o #47571)

こんばんわ

おかげさまでちょいちょい使わせて頂いておりますが、使っているうちに、いまいちよくわからない点がいくつか出てきましたので質問させて頂きます:

・"sample.c"や"system.cfg"に記述するヘッダファイル名に関して、記述する必要/不必要の基準がよくわかりません。例えば、"h8_sci.h"や"ostimer.h"(ostimer.hはsample.cにはリストアップされてない)とか・・・

・これに関連して、sample.c内にある関数"Initialize(VP_INT exinf)について、この中に記述する初期化ルーチンと、例えばostimer.cという別ファイル内で初期化ルーチンを記述するのとは何か違いがあるのでしょうか?

きっと初歩的な質問だと思われるかもしれませんがどうぞよろしくお願い致します

メッセージ #47571 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: ヘッダファイルの記述について (2009-12-25 07:26 by m-arai #47575)

おはようございます。

久しぶりに首を突っ込めそうな話題が出ているので食いついてみます。

・必要/不必要
必要/不必要の基準は勿論、それに依存するかしないか=コンパイル/リンクできるかできないか、です。
sample.c、つまりアプリケーション本体のことを指してのことだと思いますが、
については、完全にそのプログラマの流儀次第でしょう。

system.cfgに関しては、system.cfgから生成されるkernel_cfg.c/kernel_id.h内で
必要とされる情報に依存します。
何らかのファイル中で定義される タスクエントリ、各種ハンドラ、ユーザ定義の定数等を
system.cfgで記述しますと、それらは上記のコンフィグレータ出力ファイルにそのまま書き出されます。
そうなった場合、これらのファイルをコンパイルするためには、その定義を参照しなければ
なりません。とはいえ、そんな事情はコンパイラもコンフィグレータも忖度しては
くれませんので、そのためにINCLUDE("\"~.h\"");で明示してやる必要があるのです。
結局これも、どうsystem.cfgをどう書くかによります。

・別ファイル
処理系にとって、ファイル構成はどうあろうと、コンパイル/リンクに必要な情報が全て揃って
いれば、結果として全く違いはありません。
本人、そしてそれを読む人が分かりやすく、再利用しやすい構成にするべきでしょう、という
一般論しか…。

ではでは、メリークリスマス。
#47571 への返信

メッセージ #47575 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする

RE: ヘッダファイルの記述について (2009-12-26 22:14 by toru-o #47595)

こんばんわ

御礼遅くなり申し訳ございません

わたしの情報元というか、hamayanさんの書籍と、どこかで紹介があった「Super Hで学ぶuITRON・・・」を元にあーでもない、こーでもない、とトライしながら、やっとhamayanさん書籍の半分くらいまで進んできて、今回の疑問に至った訳です

m-araiさんのご指摘のとおり、私はまだkernel_cfg.cあたりがまったくわかってないことがわかりました
hamayanさん書籍の後半にもそのような記述があるようなので、もっと修行しなおしですね

※その前にコード読解力、記述力がまだまだ甘いのかもしれません
 hamayanさん書籍内のソースが殆ど理解できてないというのもありますし・・・

という訳でもっと勉強して出直しです
また質問する機会があると思いますが、そのときはまたよろしくお願い致します

少し早いかもしれませんが、皆様よいお年を!
#47571 への返信

メッセージ #47595 への返信×

Wiki文法は使えません
ログインしていません。投稿を区別するために投稿者のニックネームをつけてください(ニックネームの一意性は保証されません。全く別の人も同じ名前を利用することが可能ですので本人であることの特定には利用できません。本人であることを保証したい場合にはログインして投稿を行なってください)。 ログインする