声明:本SQLite源码剖析系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
/************** Include sqlite3.h in the middle of sqliteInt.h ***************/ /************** Begin file sqlite3.h *****************************************/ //在sqliteInt.h中包含sqlite3.h /* ** 2001 September 15 ** ** The author disclaims copyright to this source code. In place of ** a legal notice, here is a blessing: ** ** May you do good and not evil. ** May you find forgiveness for yourself and forgive others. ** May you share freely, never taking more than you give. ** *************************************************************************sqlite库的客户端接口,如果在这个文件中没有出现过某个C函数、 **结构、数据类型、或常量定义,那么它是不公开的SQLITE的API, **不会声明随时有可能改变,也不能做为使用SQLITE开发的参考。 ** This header file defines the interface that the SQLite library ** presents to client programs. If a C-function, structure, datatype, ** or constant definition does not appear in this file, then it is ** not a published API of SQLite, is subject to change without ** notice, and should not be referenced by programs that use SQLite. **有些定义被标明experimental(实验性的),这些接口不久会被加入SQLITE。 **虽然不希望改变实验性接口,会保留较小改变的权力,使用in the wild **标明的地方要谨慎改变 ** Some of the definitions that are in this file are marked as ** "experimental". Experimental interfaces are normally new ** features recently added to SQLite. We do not anticipate changes ** to experimental interfaces but reserve the right to make minor changes ** if experience from use "in the wild" suggest such changes are prudent. **SQLITE的官方C语言API文档从注解生成,这个文件在SQLITE接口 **操作方面具有权威 ** The official C-language API documentation for SQLite is derived ** from comments in this file. This file is the authoritative source ** on how SQLite interfaces are suppose to operate. ** 构造管理文件是sqlite.h.in,makefile对这个文件 **(比如嵌入式版本中)做较小改动,build过程中其名改为sqlite3.h ** The name of this file under configuration management is "sqlite.h.in". ** The makefile makes some minor changes to this file (such as inserting ** the version number) and changes its name to "sqlite3.h" as ** part of the build process. */ #ifndef _SQLITE3_H_ #define _SQLITE3_H_ #include <stdarg.h> /*SQLITE接口需要va_list定义 Needed for the definition of va_list */ /* ** Make sure we can call this stuff from C++. */ // extern声明的函数和变量可以在本模块或其他模块中使用。 // extern "C"包含双重含义,其一:被它修饰的目标是“extern”的; //其二:被它修饰的目标是“C”的。extern "C"仅被使用在C++调用C程 //序情况,C不能使用。#if 0把它屏蔽了,如果使用C++编译器,可以 //可以打开该选项 //比如test.cpp(C++源码文件)需要调用myc.h这个C头文件中 //用extern声明的函数,可以如下书写: //extern "C" //{ //#include "myc.h" //} #if 0 extern "C" { #endif /* ** Add the ability to override 'extern' */ //定义extern的宏,可使用SQLITE_EXTERN来完成extern功能 #ifndef SQLITE_EXTERN # define SQLITE_EXTERN extern #endif //定义SQLITE_API宏 #ifndef SQLITE_API # define SQLITE_API #endif