ファイルサイズを取得する一般的な方法を教えてください。
言語は C/C++ どっちでもいいです。できれば環境に依存しない方法を。

今のところは↓のようにしているのですが、これって問題ありますか?また、一般的ですか?

long filesize(const char* path)
{
 long size;
 FILE *fp=fopen(path,"rb"); if(fp==NULL)return -1;
 fseek(fp,0,SEEK_END);
 size=ftell(fp);
 fclose(fp);
 return size;
}