歩いたら休め

If the implementation is easy to explain, it may be a good idea.

【GB】C言語でオブジェクト指向風のプログラミングを試してみる

C言語によるオブジェクト指向プログラミング入門』を参考に、以下のようなコードを書いています。「第一引数に構造体を与える関数を用意してあげれば、オブジェクト指向っぽくプログラミングできるだろう」という発想です。

ポリモルフィズム的なのを考えると、マクロでがんばるとか、自前でトレイトオブジェクト的な実装するとか必要そうな気がしているのですが、今のところややこしそうなので目を瞑ります。

C言語によるオブジェクト指向プログラミング入門

C言語によるオブジェクト指向プログラミング入門

#include "Player.h"
#include <gb/gb.h>

int main(void) {
    Player player;
    // 初期値 
    Player_Init(&player, 0, 0);
    for (;;) {
        Player_Move(&player, 1, 1);
        delay(100);
    }
}

実は以下のように「 Player の構造体を返す関数」を書こうとしたのですが、 Function cannot return aggregate. Func body ignored というようなエラーが出てしまいました。

Player player = Player_Init(0, 0);

以下のページを見る限り、「gbdkを利用するために利用しているコンパイラが古すぎて、構造体を返す関数に対応していない」ようですね。これはつらい。

sourceforge.net

$ lcc -v
lcc $Id: lcc.c,v 1.6 2001/10/28 18:38:13 michaelh Exp $