
发信人: jinna@phoenix (吉娜), 信区: mud
标  题: LPC 超级短篇

* 什麽是 LPC ?

    LPC 是由 MudOS 所定义出来的语言, 用来写作 LP mud 中的物件,
LPC 是由 Lars pensj| C. 所建立起来的. LPC 它提供了 C 语言的
"while", "for" 等回圈, "if", "switch" 等选择, 甚至是 sscanf 等等
的函数, int, char 等等的资料型态(LPC 也提供 C 没有提供的其他资料
型态, 如物件跟对应). LPC 使用了 C 的语法来定义跟呼叫函数, 定义跟
使用变数等等. 不过 LPC 所定义出来的字串变数的行为跟 C 有很大的不
同. 可以参考 LPC 的其他教学说明.

    底下是一些 LPC 跟 C 的相异处:

   a) 物件以 create() 函数取代 main() 函数.

   b) 系统函数(或称为 efun)提供一组函数, 却又跟 C 的系统函数库(如 libc.a)
      不一样.

   c) 没有提供 malloc() 这一类的函数, 而是用有点类似的 allocate(int 个数)
      取代, 注意, allocate() 中的大小单位不是位元组, 而是阵列元素的大小.

   d) 记忆体从来不会很明显的释放, MudOS 驱动程式会保持这些记录, 以
      方便下次的使用. 它的使用方式俗称为 "垃圾搜集法"(garbage collected).

   e) LPC 所提供的字串不像 C, 反而比较类似 BASIC. 在 LPC 里, 字串不是字元
      阵列, 而是内定的型态, 可以使用 + 运算子, 底下举例说明:

        LPC 的下列叙述是合法的:

        string ack;
        ack = foo + bar;

        约相等於下列的 C 叙述:

        char *ack;
        ack = (char *)malloc(strlen(foo) + 1);
        strcpy(ack,foo);
        ack = (char *)realloc(strlen(ack) + strlen(bar) + 1);
        strcat(ack,bar);

   f) LPC 是一种解译是语言, 在执行前先翻译成中间符号.

   g) LPC 没有结构(struct) 跟联集(union). 事实上, "->" 运算子用来
      指示呼叫物件中的函数, 而不是跟 C 相同的用法. LPC 所提供的对
      应型态在某些状况下会比使用结构更有效.

   h) LPC 的 sscanf() 跟 C 所提供的 sscanf() 工作方式不太一样. LPC 里的
      sscanf() 的参数不必是指标型态, 因为 LPC 就是用指标的方式引用物件.
      此外, sscanf(arg,"%s %s",str1,str2) 这样的用法跟 C 的结果可能会很
      不一样. C 里面, 第一个"字"会被丢到 str1 中, 第二个字会被指定到 str2
      中, 然而, 在 LPC 中, 第一个字会被丢到 str1 中, 其馀的字串会被指定
      到 str2 中.

--
  本份文件由 wade@Fantasy.Space 提供
  本文件由 MudOS driver v21 版里的说明文件翻译而得
  本文件已获授权翻译并流通

