1、增加restrict指针
C99中增加了公适用于指针的restrict类型修饰符,它是初始访问指针所指对象的惟一途径,因此只有借助restrict指针表达式才能访问对象。restrict指针指针主要用做函数变元
,或者指向由malloc()函数所分配的内存变量
当在Lua和C之间交换数据时我们面临着两个问题:动态与静态类型系统的不匹配和自动与手动内存管理的不一致。
在Lua中,我们写下a[k]=v时,k和v可以有几种不同的类型(由于metatables的存在,a也可能有不同的类型)。如果我们想在C中提供类似的操作,无论怎样,操作表的函数(settable)必定有一个固定的类型。我们将需要几十个不同的函数来完成这一个的操作(三个参数的类型的每一种组合都需要一个函数)。
我们可以在C中声明一些union类型来解决这个问题,我们称之为lua_Value,它能够描述所有类型的Lua值。然后,我们就可以这样声明settable
void lua_settable (lua_Value a, lua_Value k,
lua_Value v);
这个解决方案有两个缺点。第一,要将如此复杂
一.Hello World
1.前言
偶最近在学习Lua, 所以写出心得和大家共享, 争取一天写一篇, 嘿嘿.
才开始学所以内容很浅, 希望大家包涵.
Lua是一种完全免费的脚本语言, 可以和C/C++语言紧密结合,
它的官方网站在http://www.lua.org. 在网站上可以下载到lua的源码, 没有可
执行版本, 不过不用担心, 因为lua源码可以在任何一种C/C++的编译器上编译.
如果要学习Lua, 官方网站上的Reference是必备的,上面有每个命令的用法,非常详细。
参考手册 http://www.lua.org/manual/5.0/
作者写的Programming in Lua http://www.lua.org/pil/
2.编译
如果用的VC6, 可以下载所需的project文件,地址在
http://sourceforge.net/project/showfiles.php?group_id=32250&package_id=115604
VSNET2003可以下载这个sln文件http://home.comcast.net/~
3 - 程序接口(API)
这个部分描述了 Lua 的 C API ,也就是宿主程序跟 Lua 通讯用的一组 C 函数。所有的 API
函数按相关的类型以及常量都声明在头文件 lua.h 中。
虽然我们说的是“函数”,但一部分简单的 API
是以宏的形式提供的。所有的这些宏都只使用它们的参数一次(除了第一个参数,也就是 lua
状态机),因此你不需担心这些宏的展开会引起一些副作用。
在所有的 C 库中,Lua API 函数都不去检查参数的有效性和坚固性。然而,你可以在编译 Lua
时加上打开一个宏开关来开启 luaconf.h 文件中的宏 luai_apicheck 以改变这个行为。
3.1 - 堆栈
Lua 使用一个虚拟栈来和 C 传递值。栈上的的每个元素都是一个 Lua
值(nil,数字,字符串,等等)。
无论何时 Lua 调用 C,被调用的函数都得到一个新的栈,这个栈独立于 C 函数本身的堆栈,也独立于以前的栈。(译注:在 C
函数里,用 Lua API 不能访问到 Lua 状态机中本次调用之外的堆栈中的数据)它里面包含了 Lua 传递给 C
函数的所有参数,而 C 函数则把要返回的结果也放入堆栈以返回给调用者(参见 lua_
2 - 语言
这一节从词法、语法、句法上描述 Lua 。换句话说,这一节描述了哪些 token
(符记)是有效的,它们如何被组合起来,这些组合方式有什么含义。
关于语言的构成概念将用常见的扩展 BNF 表达式写出。也就是这个样子: {a} 意思是 0 或多个 a , [a]
意思是一个可选的 a 。非最终的符号会保留原来的样子,关键字则看起来像这样 kword ,其它最终的符号则写成 `=′ 。完整的
Lua 语法可以在本手册最后找到。
2.1 - 词法约定
Lua 中用到的 名字(也称作
标识符)可以是任何非数字开头的字母、数字、下划线组成的字符串。这符合几乎所有编程语言中关于名字的定义。(字母的定义依赖于当前环境:系统环境中定义的字母表中的字母都可以被用于标识符。)标识符用来命名变量,或作为表的域名。
下面的关键字是保留的,不能用作名字:
and break
do else
elseif
end false
1 - 介绍
Lua 是一个扩展式程序设计语言,它被设计成支持通用的过程式编程,并有相关数据描述的设施。 Lua
也能对面向对象编程,函数式编程,数据驱动式编程提供很好的支持。它可以作为一个强大、轻量的脚本语言,供任何需要的程序使用。 Lua
以一个用 clean C 写成的库形式提供。(所谓 Clean C ,指的 ANSI C 和 C++ 中共通的一个子集)
作为一个扩展式语言,Lua 没有 'main' 程序的概念:它只能 嵌入 一个宿主程序中工作,这个宿主程序被称作
embedding program
或简称为 host
。宿主程序可以通过调用函数执行一小段 Lua 代码,可以读写 Lua 变量,可以注入 C 函数让 Lua
代码调用。这些扩展的 C 函数,可以大大的扩展了 Lua
可以处理事务的领域,这样就可以订制出各种语言,而它们共享一个统一的句法格式的框架。 Lua 的官方发布版就包含了一个叫做 lua
的简单的宿主程序,它用 Lua 库提供了一个保证独立的 Lua 解释器。
Lua 是一个自由软件,它的使用许可决定了对它的使用过程一般没有任何保证。这份手册中描述的东西的实现,可以在 Lua
的官
(2011-09-27 17:52)
VMWare提供了三种工作模式,它们是bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)。要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式。
1.bridged(桥接模式)
在这种模式下,VMWare虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。
一、CentOS安装TortoiseSVN
yum install -y subversion
二、SVN客户端命令
1、将文件checkout到本地目录
svn checkout path(path是服务器上的目录)
例如:svn checkout svn://192.168.1.1/pro/domain
函数 描述
int(x [,base ]) 将x转换为一个整数
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval_r(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为
def qsort(arr, low, high):
# 只有low小于high的时候才有必要排序
if low < high:
# 确定基准位置
pivotpos =
partition(arr, low, high)
#
快速排序基准位置左边的元素
qsort(arr, low, pivotpos
- 1)
#
快速排序基准位置右边的元素
qsort(arr, pivotpos + 1,
high)
def partition(arr, low, high):
'''确定基准位置,把比它小的移动到它的左边,
比它大的移到它的右边
'''
pivotpos = low
pivot = arr[low]