| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2441 人关注过本帖, 1 人收藏
标题:VFP:多行注释的尴尬!
只看楼主 加入收藏
foxfans
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:112
专家分:324
注 册: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
等 级:版主
威 望:66
帖 子:1068
专家分:2607
注 册:2015-12-30
收藏
得分:0 
既然是调试,那通常会在开发环境做,编译成EXE应该是已经确定了方案,也就没必要保留调试程序了

另:#if确实不会编译到项目中,然,效率能有多大差别?
2022-05-15 21:29
foxfans
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:112
专家分:324
注 册: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
等 级:版主
威 望:66
帖 子:1068
专家分:2607
注 册:2015-12-30
收藏
得分:0 
学习了实例,汇报如下
前半部分程序,运行了很久都没测出时间来,不知何故,只能强制中断
后半部分程序执行结果是:7.166和8.341,效率果然差距很大
2022-05-16 08:43
快速回复:VFP:多行注释的尴尬!
数据加载中...
 
   



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

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