如何排除错误
 [首页][前页]

  一、编译时产生的语法错误
Type of returned value doesn't match function return type ( xxx vs xxx )

原因    :比对或传回值跟所要求的种类不合。
解决方法:最简单的方法就是想办法让他们的种类变成一样。举例来说,如果你
          要比对的值是数值 (int) 但是传回值是混合 (mixed) 你可以在传回
          值前面加上 (int) 「强迫」他以数值的形态传回。(type casting)
 
Undefined variable
 
原因    :使用的变数没有宣告
解决方法:宣告该变数
 
Undefined function
 
原因    :呼叫到的函数没有事先宣告
解决方法:确定函数的拼法正确,如果该函数不是  efuns 的话,确定你有继承
          含有该函数的物件,如果该函数是定义在你的程式码中,确定你有事
          先宣告这个函数。(function prototyping)
 
Illegal LHS before ...
parse error before ...
 
原因    :程式码中有没对应到的 {},(),"",或是缺 ;
解决方法:检查是否所有的 { 都有一个对应的 },( 都有一个对应的 ),该有
          ; 的地方是否都有 ;
 
Warning: Unknown \x char
 
原因    :中文编码 (BIG5)中包含 \ 这个字元,因为 \ 在 C 语言中用来当
          escape  character 的,所以当含有这类字元的中文字出现在程式码
          中(叙述或讯息)就会出现这个警告。常用的字如武功的功,晚餐的
          餐...等等。
解决方法:在这类字的后面多加一个 \,如 武功\,晚餐\。
  二、逻辑上的错误,或是编译成功,可是出来的结果不是你想要的

  首先,顺著程式一行一行找,是那一行开始出现问题的?如果有必要,你可以在各节点间呼叫 printf() 或是 write() 等函数用来报告各个参数的目前值,用以追查出错的地方。

  检查你是否正确的使用 if() 这个函数。 if(a==b) 跟 if(a=b) 的含义不同,前者会在 a 值等于 b 值时传回真(True),后者则是如果 b 存在,且 a 能成功的被设成 b 值时传回真(True)。确定你要用的是前者还是后者。

  如果你的程式中有用到比较的指令(if,case...等)先确定比较前各参数所存的值是否为你要比较的东西,并且确定你有 type casting 的地方有传回你所期望的值(比方说,如果 str 是一个字串变数,里面存有 "abc",则 (int)str 代表一个数值 0,确定这是你所要的)。

  replace_program() 这个函数只能用在简单的房间里,所谓简单的房间就是只包含 create() 这个函数的房间. 如果你发现你在房间里用 add_action() 所增加的指令无法正常运作,请检查你房间的程式码中是否有 replace_program() 这行。注:因为 roommaker 一定会加上这一行,如果你用 roommaker 写好的房间再增加别的东西的话,视情况,请记得把 replace_program() 那行拿掉。

  三、如果真的找不出原因

  那...只好找别的巫师帮你看了。问人以前请先确定你已经试过所有你能想到的方法去解决,可是都没成功,再去问人。

[回到顶部
天下创作室