>>180
>>170 の
  const grade_t *x = a;
  const grade_t *y = b;
を
  const grade_t *x = (const grade_t *)a;
  const grade_t *y = (const grade_t *)b;
に書き換えてもダメか?
(*.cppとしてコンパイルしていると想定)