0

次の関数を検討してください。

off_t
func (const struct inode *inode)
{
  off_t length = 0;
  read_cache (&length, inode->sector, offsetof (struct inode_disk, length), sizeof (off_t));
  return length;
}

エラーと警告の両方が表示されます。

error: expected declaration or statement at end of input
warning: control reaches end of non-void function [-Wreturn-type]

エラーと警告の両方が指す行は、関数の閉じ括弧を制御する最後の行です。

検索したところ、関数の戻り値の型が void でない場合にこのエラーが発生し、何も返されないことがわかりました。しかし、ここではそうではありません。

助けてください !

編集:

以下には、その関数の上の関数と、ソース コードに表示されるその関数が含まれています。

/* Re-enables writes to INODE.
   Must be called once by each inode opener who has called
   inode_deny_write() on the inode, before closing the inode. */
void
inode_allow_write (struct inode *inode) 
{
  ASSERT (inode->deny_write_cnt > 0);
  ASSERT (inode->deny_write_cnt <= inode->open_cnt);
  inode->deny_write_cnt--;
}

/* Returns the length, in bytes, of INODE's data. */
off_t
inode_length (const struct inode *inode)
{
  off_t length = 0;
  read_cache (&length, inode->sector, offsetof (struct inode_disk, length), sizeof (off_t));
  return length;
}

その上の関数で中括弧などが欠けているとは思いません。

4

0 に答える 0