SQLITE_PRIVATE void sqlite3PagerPagecount(Pager *pPager, int *pnPage){
assert( pPager->eState>=PAGER_READER );
assert( pPager->eState!=PAGER_WRITER_FINISHED );
*pnPage = (int)pPager->dbSize;
}
if( nPage==0 ) sqlite3PagerPagecount(pBt->pPager, &nPage);上面的代码中为什么使用函数获取nPage的值而不直接使用
nPage=(int)pBt->pPager->dbSize;?我在sqlite源码中看到很多类似的用法,很迷惑,望大侠们指点一下!
assert( pPager->eState!=PAGER_WRITER_FINISHED );
做了一些断言,保证有效性。直接取,不知道变量是否有效。
还有就是,有些类的变量是private或保护类型的,直接访问是不允许的。只有通过调类里面的函数接口实现访问
假设他现在写成了nPage=(int)pBt->pPager->dbSize;
那么他以后改变nPage计算的算法了,比如改成(int)pPager->dbSize%12这种形式就麻烦大了