欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SQLITE源码剖析(5)

程序员文章站 2022-03-02 16:27:07
...

声明:本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