SQLITE源码剖析(5)
声明:本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
上一篇: 05_Redis_事务
推荐阅读
-
Redis源码剖析和注释(十八)--- Redis AOF持久化机制 redis
-
Redis源码剖析和注释(十八)--- Redis AOF持久化机制 redis
-
HTML5实战与剖析之原生拖拽(四可拖动dragable属性和其他成员)
-
.5-浅析express源码之Router模块(1)-lazyrouter
-
HTML5实战与剖析之媒体元素(6、视频实例)
-
深度剖析使用python抓取网页正文的源码
-
Spring 5.x 源码 —Spring AOP源码—代理方法的调用与增强
-
Laravel5 源码解析 (一)
-
A5源码:2017年6月份源码更新推荐
-
HTML5实战与剖析之原生拖拽(三dataTransfer对象)