スポンサード リンク

T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« 本体の変更を開始 | トップページ | ダイアログが多いので »

構造体のサイズも変わる

昨日から、AmuseGraphics本体のバージョンアップ開発を開始し、まずは、現行版のソースコードの文字セットがUnicodeになっていなかったので、機械的にUnicodeに変更したのだが、今日は、そのコードを動く様にした。つまり、文字セットを変更すると問題が出る訳だ。

文字セットを変更すると問題が出る、なんて事を書くと、それはお前がちゃんとしたソースコードを書いていないからだ、と、いう人が、結構、いそうな気がする。

これは何故なのか、というと、そもそも、Windowsでは、文字セットがマルチバイト文字であろうがUnicodeであろうが、ソースコード的には関係なくなる様に、「_TCHAR」型が使える様になっているので、それを使っていれば、文字セットを変更しても、ソースコードを変更する必要は無い、という事になっているからだ。

もっとも、当然の事ながら、作者はそんな事は大昔から知っていた訳なのだが、そんな型を使おうとは、一切、思わなかった。これは何故なのか、というと、そんなモノを使ってみても、何の役にも立たない上に、他OSへの移植がより面倒になるだけだからだ。

まあ、こんな事を書いていると、作者みたいな人間は、所詮、アセンブラからプログラミングを始めて何も成長できなかった老害だから相手にしない様に、なんて事を言われそうな気はする。

しかし、一つのソースコードでマルチバイト文字セット版バイナリとUnicode文字セット版バイナリを生成できたとして、一体、それが何の役に立つんだ? と、作者的には思う訳だ。

「だから!!」、と、今度は切れられそうなのだが、当然の事ながら、上記の様な仕組みを使ってコードを書いていれば、昨日やった様な作業は行う必要は無かった。

なので、「役に立ってるだろう!」、と、言われそうな訳なのだが、そういう事を言う人は現場を知らない経営者みたいなモノかもしれない。

何故なら、もし、上記の様な表現を使っていたとすると、昨日の様な作業はする必要は無かったかもしれないのだが、より面倒な作業が必要になった筈だからだ。

これは何故なのか、というと、マルチバイト文字セットとUnicode文字セットでは、同じ文字列に対する所要バイト数が事なるからだ。

もっとも、こういう事を書いていると、「だから、お前はアセンブラ人間なんだ」、と、蔑まれそうではある。

つまり、高級言語でのプログラミングは抽象化が命な訳なので、変数のバイト数なんてモノを問題にする行為が、これからプログラミングを始めようとする若者の成長を阻害する事になるので、「老害」、という事になる訳だ。

と、いう事なので、これからプログラミングを始めようとする若者は、作者よりも若い先輩のいう事をきいた方が身のためではあるのだが、作者的には、_TCHAR型なんてものを使ってみても、百害あって一利なしだった訳だ。

何故なら、作者的には、AmuseGraphicsの次バージョンを作っている訳なので、極力、従来バージョンとの互換性を図らなければならない。

つまり、従来版で保存された設定ファイルだとか定義ファイルなんかは、次バージョンでもそのまま使える格好にするのが望ましい訳だ。

そして、当然の事ながら、ビルド時に文字セットを変更してみても、上記の様なファイルの内容は変更されない訳なので、どうしたって、変数のバイト数は重要になる訳だ。

もっとも、気を付ける必要があるのが文字列だけなら、大した問題でもないのだが、表題にした様に、Windowsでは、文字セットを変更すると、構造体についても、サイズが変わるモノがある。

例えば、AmuseGraphicsの設定ファイルには、設定された文字フォントを記憶する為に、面倒なので、LOGFONT構造体をそのまま書きこんでいるのだが、この構造体のサイズは文字セットを変更すると変わってしまう。

なので、今日は、まず、設定ファイルの読み込みが正しく行えなかった訳なのだが、まあ、作者的には、常に、バイト数なんかは気にしているので、問題解決は容易だったのだが、ここら辺が抽象化されてしまうと、手の出しようはなくなるかもしれない。

= この記事に関連する公開中ソフト =

AmuseGraphics

AmuseGraphics

(2016/05/04追加)

« 本体の変更を開始 | トップページ | ダイアログが多いので »

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/534482/62751215

この記事へのトラックバック一覧です: 構造体のサイズも変わる:

« 本体の変更を開始 | トップページ | ダイアログが多いので »

2017年10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    Cookieを無効にする設定およびAdsenseに関する詳細については、以下のリンクを参照下さい。

    広告 - ポリシーと規約 - Google