标题:VFP:多行注释的尴尬!
只看楼主
foxfans
Rank: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册:2021-10-23
得分:0 
*!* && *
#if .f.(或#if 0) 和 if .f. 是不一样的,把调试模式关掉,编译,前者是不会编译到项目中。这就是运行效率的问题。
#if _WIN64  _WIN32 类似C++判断是否为64位程序,按需编译(预编译).

[此贴子已经被作者于2022-5-15 20:30编辑过]

2022-05-15 20:28
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
既然是调试,那通常会在开发环境做,编译成EXE应该是已经确定了方案,也就没必要保留调试程序了

另:#if确实不会编译到项目中,然,效率能有多大差别?
2022-05-15 21:29
foxfans
Rank: 4
等 级:贵宾
威 望:11
帖 子:90
专家分:278
注 册:2021-10-23
得分:0 
编译调试模式和你说的调试二个不同概念
#if .f. (0) 预编译判断后不会将假的相应代码编译进去更不会执行,不编译到项目中,效率自然高上很多,只有作者知道。
do while .t.
 #if 0
  ?"a"
 #endif 0
enddo
上面编译后等价于
do while .t.
enddo

而if endif是老实的运行判断
do while .t.
  if .f.
  endif
enddo
效率十万八千里。可以简单测试

t=SECONDS()
n=1
do while n<50000000
  #if 0
  #endif 0
  n=n+1
enddo
?SECONDS()-t
 
t=SECONDS()
n=1
do while n<50000000
  if .f.
  endif
  n=n+1
ENDDO
?SECONDS()-t

[此贴子已经被作者于2022-5-15 22:54编辑过]

2022-05-15 22:37
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:54
帖 子:802
专家分:1914
注 册:2015-12-30
得分:0 
学习了实例,汇报如下
前半部分程序,运行了很久都没测出时间来,不知何故,只能强制中断
后半部分程序执行结果是:7.166和8.341,效率果然差距很大
2022-05-16 08:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-508950-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.228297 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved