热情软件屋

 

P代码和本机代码的运行(除了速度)是否一样


编号:QA002639
建立日期: 2000年2月28日 最后修改日期:2000年2月28日
所属类别:

shibill:
    编程工具: vb.vc
    操作系统: windows
    请问P代码和本机代码的运行(除了速度)是否一样,在跨开发平台方面有无限制?

回答:

    除了速度,P代码和本机代码还是有一些区别的:
    1、参数计算的方向不同。一般,VB是从左到右计算函数的参数,但如果编译本机代码时选择了优化,则顺序可能改变。微软承认这是VB 5/6的一个错误。下面的程序使用两种方法编译结果不同:
     Dim Sample As String
    
     Public Sub Main()
    
     Dim Temp1 As String
    
     While (get_String) And Not (Sample Like "*/*/*")
     MsgBox "In loop --> " & Sample & " " & Not _
     (Sample Like "*/*/*")
     Wend
     MsgBox "after --> " & Sample
     End Sub
    
     Function get_String() As Boolean
     Sample = "09/19/97"
     get_String = True
     End Function
    2、在微软的KB中列出了一些由于P代码或本机代码设置导致的问题,这些问题一般都可以升级到VB6 SP3来解决:
    微软的Knowledge Base的文章:“Q223113 IX: EXE Crashes When Looping Through Array From Property Get”
    微软的Knowledge Base的文章:“Q171489 IX: Use of Implements and Public Constants Crashes Compiler”
    微软的Knowledge Base的文章:“Q171555 IX: More Than One Sub Main May Cause EXE to Crash”
    微软的Knowledge Base的文章:“Q171837 IX: Run-time Error 6 "Overflow When Compiled to Native Code"”
    微软的Knowledge Base的文章:“Q193367 IX: Access Violation in MSVBVM50 When Passing a Variant Array”
    微软的Knowledge Base的文章:“Q198607 RB: Access Violation in VB Run-Time Using AddressOf”
    微软的Knowledge Base的文章:“Q169385 RB: Screen Turns Black While Making .exe”
    微软的Knowledge Base的文章:“Q171838 IX:Crash Compiling Native Code for Assignment of Variant Array”
    微软的Knowledge Base的文章:“Q172256 IX: RISC: CByte Doesn't Fail on Negative Values in Native Exe”
    另外,在个别情况下,编译为本机代码会更慢,参考微软的Knowledge Base的文章:“Q176435 RB: Compiling to Native Code Can Be Slow”

此问题由李海回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio