PSP xvi

PSPプログラミングを教えるブログ(本気で頑張る人アクセス大歓迎サイト)

PSP-X.gif

記事の間違いを報告  新アップローダー
記事修正情報 PSPプログラミング資料 自作ゲーム PSP用エミュレータ リンク

公認リンク
公式PSP専科 公式PSVita専科 はじめるPSPSDK PSP EXEC GAME M@STER PSP 猫山のYouTubeチャンネル

TAG
全記事にタグをつけています  http://nekoyama2gillien.blog36.fc2.com/?tag=タグ
PSP PSPプログラミング DXライブラリPortable OSLib ショートプログラム ハローワールド
PSP自作ゲーム PSP自作ソフト エミュレータ ゲームアーカイブス PSP動画
動画 初音ミク ミクミクダンス MMDドラマ ゲーム 魔法少女まどか☆マギカ 侵略!イカ娘
アイドルマスター

このブログについて

このブログでは、非公式のPSPソフト、いわゆる自作ソフト( PSP Homebrew )を作る事を目的とします。

著作権などの こまかい利用規約については、こちらを開いてお読み下さい

このブログについて知りたい方、初めて来訪された方はこちらを開いてお読みください
お問い合わせは 猫山猫宗(nekomune@gmail.com)までどうぞ


当ブログはリンクフリーです。ブログ名は、アルファベットで「PSP xvi」と書いて『ピーエスピー・エクシビ』とお読みください。
相互リンクを希望されるブログ運営者様は、ココで申請して下さい。


このブログで全記事から探し物の方は、ここをクリックして下さい。
http://nekoyama2gillien.blog36.fc2.com/?all

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[edit]

CM: --
TB: --

page top

C言語では、プログラムはヘッダーファイルとプログラムコードファイルとライブラリファイルとに大別されます。
一般的には、インクルードとはヘッダーファイルなどを参照することで、リンクとはライブラリを取り込む事のようです。全角文字表示ライブラリでは、東雲フォントのデータ(Shinonomefont.c)をインクルードしています。(注)

ヘッダーファイルとは、プログラムで使用する関数の宣言(返り値や引数のキャストも書かれています)や、定数の定義や変数の構造体の定義や、マクロ定義などを書くテキストファイルで、拡張子は '.h' 。
別名、インクルードするファイルとか、インクルードファイルとか呼ばれます。

ヘッダーファイル中で、変数の本体を宣言したり、関数の本体を書くことはお勧めしません。
理由は、ヘッダーファイルをインクルードした全てのファイルから参照できるので、同じ変数や関数がどこにでも作成されることになり、「本家はどこですか?」というコンパイルエラーが発生します。

一般には、ヘッダーファイルは、「参照すること/参照させること が目的」です。

(注)
全角文字表示ライブラリでの、フォントデータの参照方法
東雲フォントのデータ、const char shinonomefont[ ]; が書かれているファイル shinonomefont.c は、コンパイルされるだけでインクルードはされていませんが、どうやって shinonomefont[ ]; が参照されているのかを紹介します。
ファイル zenkaku.c の、draw_char( ); 関数にて、extern宣言で const char shinonomefont[ ]; を参照する、という記述がされています。
extern宣言で参照させたい変数や関数は、実行ファイルをビルドさせる全てのオブジェクトのどこかに本体が一つだけあれば良いのです。
全角文字表示ライブラリでは、MAKEFILE で

OBJS = main.o zenkaku.o shinonomefont.o

という記述で const char shinonomefont[ ]; のデータ本体があるファイルを リンクさせています。

プログラムコードファイル(という呼び名でいいのかな?)の'.CPP' '.C' '.S' では、変数を宣言したり、関数の実際の処理などを書きます。
プログラムの本体です。このファイルで定数の定義や変数の構造体の定義や、マクロ定義などを書いてもエラーにはなりませんが、美しくないので、プログラムコードとヘッダーとにファイルを分けて書いたほうが良いと思います。
ただし、ヘッダーファイルは参照させたい事を書いておくファイルなので、むやみやたらと分別して書くのでは困ります。
サブルーチンAという関数で、補助サブルーチンB、C、Dを呼び出している場合に、そのヘッダーファイルにも サブルーチンB、C、D の宣言を書いておくと、そのヘッダーファイルをインクルードさせた途端 他からもサブルーチンB、C、D の呼び出しが可能になってしまうので(変数や構造体なども同様)、上手に書き分けて下さい。
参照させたくない定義や変数や補助関数などは ヘッダーファイルに書かないで、プログラムコードソース・ファイル側 に書いて下さい。


ライブラリファイルは、良く使うプログラムソースをコンパイルして出来たオブジェクトファイル(バグ取り済み)を寄せ集めたアーカイブです。拡張子は '.a' 。
「ヘッダーファイルとアーカイブファイル」を指定するだけで利用できる便利な関数群とでも捉えておいて下さい。


PSP用のライブラリには、全角文字表示ライブラリ、画像や音声等を扱える「DXライブラリPortable」、PSP本体内蔵のフォントを利用できるイントラフォントライブラリ、SXライブラリ、タイムマネージャライブラリ、アニメーションライブラリなど、色々あります。

ライブラリは、上手に利用すると、短いソースコードでmp3音楽を再生できたりするので便利です。


次回は、「ライブラリの導入」です。お楽しみに~♪


【 関連記事 】
PSPプログラミング PSPSDK に同梱されているライブラリの一覧とリンク記述
PSPプログラミング EBOOT.PBP 生成用 Makefile 記述方法
PSPプログラミング プラグイン生成用 Makefile 記述方法
PSPプログラミング 正しい main( ) 関数の書き方を ご紹介

関連記事
スポンサーサイト

[edit]

CM: 14
TB: 0

page top

この記事に対するコメント

>全角文字表示ライブラリでは、東雲フォントのデータ(Shinonomefont.c)をインクルードしています。

してねーし。氏のライブラリは、フォントファイルはリンクしてるっての。

>このファイルで定数の定義や変数の構造体の定義や、マクロ定義などを書いてもエラーにはなりませんが、美しくないので、プログラムコードとヘッダーとにファイルを分けて書いたほうが良いと思います。

ヘッダは定義を集める場所じゃないんだけど・・・。
自分自身のファイル内でしか使われない定義は、ヘッダに書く意味ないっしょ。ファイル内に書くべき。

このブログって、以前から、よくわかってないくせにいい加減なことを言い切っててウザイ。もっと勉強してから書いたら?

通りすがり #mQop/nM. | URL | 2009/10/24 12:59 * edit *

>>通りすがり
ほかに解説サイトなんて存在しないので十分だと思いますが?
代わりにそういうサイトを作成してくれるならば別になにも言いませんがねw
解説する気もないのにそういうことを言う筋合いはないんじゃないですか?

solve #- | URL | 2009/10/24 14:08 * edit *

気に入らないなら、アクセスしなきゃいいのだだだっ
それで おけっ!

解説って大変なコトなので、間違えてたら命取りヨ?!

猫山猫宗 #jjrqi.Ao | URL | 2009/10/24 15:03 * edit *

解説を書く前に~

んーと、猫さんはK&Rを熟読してみるといいかもです。
C言語の初心者にはK&Rを渡しても?マークが浮かぶだけですが、猫さんなら楽勝でしょう
技術書って買っておくと安心しちゃって結局読まないことありますけど(私だけ!?)K&Rは猫さんレベルなら是非読むべきかと!

憂煉 #- | URL | 2009/10/24 22:28 * edit *

憂煉さん~~

> んーと、猫さんはK&Rを熟読してみるといいかもです。
> C言語の初心者にはK&Rを渡しても?マークが浮かぶだけですが、猫さんなら楽勝でしょう
> 技術書って買っておくと安心しちゃって結局読まないことありますけど(私だけ!?)K&Rは猫さんレベルなら是非読むべきかと!

ブライアン・カーニハンとデニス・リッチーの著書『プログラミング言語C』ですな。
ちょっくら買ってみますよ。

PSPの技術書もホスイ♪

猫山猫宗 #jjrqi.Ao | URL | 2009/10/25 00:16 * edit *

PSPの開発キットを買えば技術書ついてくるんじゃないかなぁ・・・
学生には高すぎる><。

憂煉 #- | URL | 2009/10/25 09:42 * edit *

正式な開発キット

> PSPの開発キットを買えば技術書ついてくるんじゃないかなぁ・・・
> 学生には高すぎる><。

そっ、それは、もしや コード・ウォリアー とかいうシロモノではっ!!
企業だから買える値段だっちうのぉ~~(笑)

猫山猫宗 #jjrqi.Ao | URL | 2009/10/25 12:07 * edit *

コードウォーリアは別売りですね。
まぁ、SCEとライセンス契約(金額不明、審査あり、おそらく個人じゃ無理)しなきゃ、いくら金積んでも購入できないですけどね。SCEの開発機も同様ですけど。

DSはコードウォーリアですけどね…

名無しさん #- | URL | 2009/10/25 13:28 * edit *

高度魚利亜~??

別売りですか。
ソフト開発は、一般では、コードウォーリアでやるのだっ!って
聞いてましたが、さて…??www

猫山猫宗 #jjrqi.Ao | URL | 2009/10/25 14:05 * edit *

猫山さんに悪いんですが、
言葉遣いはともかく、私は通りすがり氏と同感です。
上から目線な言い方になってしまうんですが、
確かに、猫山さんはCの知識が足りないように思われます。
最初の方の記事なんて、文字列を数値に変換する関数を
自作してたし。(超便利関数sprintfを知らない)
なので、勝手な要望ですが、もっと勉強してほしいです。
そうすれば、このサイトはもっと素敵になると思いますよ♪

名無しさん #/3WEEAIQ | URL | 2011/04/08 18:32 * edit *

ん?

確かに、以前は未熟者でしたが

でも、Cの知識が足りなかったら、sprintf関数の互換品は作れないんじゃないの?

ボクはWindows OSが登場する前にC言語を勉強していたので基礎の命令しかない頃のC言語の教科書一式で勉強したのですが

C言語の便利な関数を使わない == Cの知識が足りない という解釈は正しいのか?

ここはソフト開発ブログなので既存関数の互換品を作ってもいいと思うのですが
printf関数の互換品(フォーマット付き)を作れる人はどれだけ居るのか知りたいとかw

最近になって、C言語が基礎形態から一新されたので勉強しなおせ!というのなら勉強しなおしますが、今はC++言語の勉強中なのです。

歴史の勉強で 昭和まで勉強した人に、今は平成22年だから歴史を勉強しなおせ!と言ってるようなモノですよ?

過去記事しか読んでない人に、猫山は勉強してないとかCを知らないとか決め付けられたくないっ、とw
最近の猫山の勉強っぷり&成長っぷりを調べた上で書き込みしたんだろうか?
旧OSLib版UTAUスライドショウではsprintf関数使ってますよ?

勉強はやってます。C++の参考書買ってきた、って過去記事 書いたじゃん・・・Orz

猫山猫宗 #jjrqi.Ao | URL | 2011/04/08 22:14 * edit *

えーと、言い方が悪かったようですね。
私が言いたいことは、PSP開発初心者にあなたのようなプログラミングは向いてない、
ということです。

たとえば、初心者がプログラミングをするとき、自作関数を作るorライブラリ関数を使う
という場面に出くわしたとき、あなたならどちらを推薦しますか?
私は断然ライブラリ関数を使うことを推薦しますよ。
無駄な労力だし、バグが増えるだけですから。

それと、過去記事のBMP表示プログラムですが、あのコードはひどいです。
構造体定義して一気読みした方が断然効率的なのに、
ちょくちょくfseekしてて、見た目も汚いです。

このようにあなたのプログラミングは初心者に不向きだと思います。

名無しさん #nS0rEsxM | URL | 2011/04/10 20:37 * edit *

なんかね。

再度このブログ見たらすごく読みづらいのよ

初心者向きではない内容もあるし、書き直した方が良いと判断しました
すぐには反映できませんがちょっとずつ修正していきます

ご意見ありがとう!

猫山猫宗 #jjrqi.Ao | URL | 2011/04/11 12:22 * edit *

はじめまして^^名前のとうり僕は小5です(マジで)

>名前も書けない初心者
 そうでしょうか?僕は読んでできましたし、それにどこに行ってもここまでしてくれるブログありませんよ!

小5 #CWuI21f2 | URL | 2013/04/07 20:03 * edit *

page top

コメントの投稿

Secret

page top

トラックバック

トラックバックURL
→http://nekoyama2gillien.blog36.fc2.com/tb.php/177-786fe137
この記事にトラックバックする(FC2ブログユーザー)

page top


h o m e |


 

2017-05