読者です 読者をやめる 読者になる 読者になる

テストステ論

高テス協会会長が, テストステロンに関する情報をお届けします.

(macro-of-inline report) 関数先頭に代入文を挿入した

引数が関数ポインタでない場合は, 中で一回変数に代入する(alias = original name). これがないと, 外の環境をマクロの中にダイレクトに招き入れることになる. つまり, せっかくリネームしたのに意味がなくなる. この実装もASTの改変によって行った.

これでたぶん安全にマクロ化出来る.

マクロ化は簡単. その上で, さきほどのAnyノード追加プルリクがマージされたら, あとは一本道でmacro-of-inlineの基礎実装は終わりとなる. そこまでやったらソフトウェアとしてまともな形に整形してリリースという感じ.

ところで,

hfjq[3] = ys

のラインはコンパイル出来ない. うわぁ辛い. ArrayDeclの場合もrenameなしにした方がいいかも知れない.

inline void fun(int x, char *y, int (*f)(int), void (*g)(char c), struct T *t, int ys[3])
{
  int Ivpu = x;
  char *QUVc = y;
  struct T *yjCw = t;
  int wCBx[3] = ys;
  int xkAd = *QUVc;
  int *hotx = &xkAd;
  int hfjq[3];
  Ivpu = xkAd;
  while (Ivpu)
  {
    int ZApq;
    ZApq = 0;
    ZApq = 0;
    do
    {
      ZApq += ZApq;
    }
    while (ZApq);
  }

  int PEkW;
  if (*QUVc)
  {
    yjCw->x = f(*QUVc);
  }
  else
  {
    g(yjCw->x);
  }

  do
  {
    struct T iFNC;
    iFNC.x = 1;
  }
  while (0);
}