易截截图软件、单文件、免安装、纯绿色、仅160KB

Lua与C交互入门

 Lua与C交互入门
简介
Lua与C/C++结合是很紧密的, Lua与C++交互是建立在Lua与C的基础上的, 所
以偶先从Lua与C讲起.
正如第一讲所说, 运行Lua程序或者说调用Lua主要有两种方式:
* 通过命令行执行"Lua"命令
* 通过Lua的C库
虽然此前偶们一直用第一种方式, 但偶要告诉你, 通过Lua的C库执行才是游戏中
常用的方式.
2.Lua的C库
Lua的C库可以做为Shared Library调用, 但一般开发游戏时会把Lua的所有源程序
都包含在内, 并不把Lua编译成共享库的形式. 因为Lua程序只有100多K, 而且几乎
可以在任何编译器下Clean Compile. 带Lua源程序的另一个好处时, 可以随时对Lua
本身进行扩充, 增加偶们所需的功能.
Lua的C库提供一系列API:
* 管理全局变量
* 管理tables
* 调用函数
* 定义新函数, 这也可以完全由C实现
* 垃圾收集器Garbage collector, 虽然Lua可以自动进行, 但往往不是立即执行的,
  所以对实时性要求比较高的程序, 会自己调用垃圾收集器
* 载入并执行Lua程序, 这也可以由Lua自身实现
* 任何Lua可以实现的功能, 都可以通过Lua的C API实现, 这对于优化程序的运行速度
  有帮助. 经常调用的共用的Lua程序片断可以转成C程序, 以提高效率. 连Lua都是C写的
  还有什么C不能实现呢? 
3.Lua与C集成的例子
例e10.c
/* A simple Lua interpreter. */
#include 
#include 
int main(int argc, char *argv[]) {    
char line[BUFSIZ];    
lua_State *L = lua_open(0);    
while (fgets(line, sizeof(line), stdin) != 0)        
lua_dostring(L, line);    
lua_close(L);    
return 0;
}
编译
Linux/Cygwin
* 先编译Lua, 并把头文件放入include路径
* gcc e10.c -llua -llualib -o e10
VC6/VC2003
* 先编译Lua, 在Option中设置头文件和库文件路径
* 新建工程,在工程配置中加入附加库lua.lib和lualib.lib
* 编译成exe
运行结果
本程序的功能是实现一个Lua解释器, 输入的每行字符都会被解释成Lua并执行.
程序说明
* #include  包含lua头文件, 然后才可以使用API
* lua_State *L = lua_open(0) 打开一个Lua执行器
* fgets(line, sizeof(line), stdin) 从标准输入里读入一行
* lua_dostring(L, line) 执行


相关文档:

C与C++风格字符串

C风格字符串:对字符串进行操作的 C 函数定义在头文件<cstring>中;
     1. 字符串定义:char* result;
     2. 字符串的最后一个字符是null字符('\0'),可以通过这个字符确定字符串的结尾。
     3. strlen()返回的是字符串的大小;因此, ......

C/C++应聘总结[特别推荐给大三的学弟学妹们]


搞软件是有搞头的
——邹祁峰
2009年12月3日
 
声明:所说的只针对C、C++、.NET专业的同学,对其他专业也许没有参考价值!
[推荐给大三的学弟学妹们]
【欢迎各位朋友补充】
 
    对我个人而言,大学毕业找工作算是画上了一个许多人羡慕,但我自己仍感遗憾的句号。找工作期间 ......

在AIX机器上的C程序

【checkpass.c】
#include <stdio.h>
#include <string.h>
 
int checkpass(void){
   int x;
   char a[9];
   x = 0;
   fprintf(stderr,"a at %p and\nx at %p\n", (void *)a, (void *)&x);
   printf("Enter a short word: ");
&nbs ......

C/C++风格字符串

一:字符串类型分类:
1.       C风格字符串:起源于C,并在C++中得到支持。
a.       存储方式:被存储在一个字符数组中,通过一个char*类型的指针来操纵它。
b.       提供的库函数:包含头文件:#include<cstring> ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号