ちと教えて。

extern int hogehoge( void );


extern int hogehoge( void )
{
  return( 0 );
}

ってコードって、どう解釈されるの?
externで外部参照宣言しておいて、自分の中にexternで関数を書くのって
C言語的には普通に問題なく解釈されるものなの?

もう会社から消えた先輩のソースを見て、疑問でまくりの1つです。