自己没事写了一段代码 中央编译局总是不通过 请高手帮忙看…

当前位置: >
> excel vba 提问:为什么编译异常(提示说else没有if)
excel vba 提问:为什么编译异常(提示说else没有if)
redflish & at
excel vba 提问:为什么编译错误(提示说else没有if)写了一段代码。为什么提示说编译错误!
贴出我的代码,请高手帮忙解答!谢谢!
星号下的那行,就是报错的代码。
是一个比较麻烦的if嵌套,不好意思,水平有限。等解决了基本代码的问题,我再学习怎么优化!
Sub & insertfirst()
& Dim & i & As & Variant
& i & = & 2
& While & Trim(Worksheets( &sheet1 &).Range( &A & & & & i & + & 1).Value &
& vbNullString)
& If & Worksheets( &sheet1 &).Range( &D & & & & i & + & 1).Value &
& Worksheets( &sheet1 &).Range( &D & & & & i).Value & Then
& If & Worksheets( &sheet1 &).Range( &C & & & & i & + & 1).Value & = & 1 & Then & i & = & i & + & 1
& Worksheets( &sheet1 &).Rows(i & + & 1 & & &
&: & & & & i & + & 1).Select
& Selection.insert & Shift:=xlDown
& Worksheets( &sheet1 &).Range( &C & & & & i & + & 1).Value & = & 1
& i & = & i & + & 1
& *(编译错误!else没有if) &
& ElseIf & Worksheets( &sheet1 &).Range( &B & & & & i & + & 1).Value & = & Worksheets( &sheet1 &).Range( &B & & & & i).Value & Then
& If & Worksheets( &sheet1 &).Range( &C & & & & i & + & 1).Value & = & Worksheets( &sheet1 &).Range( &C & & & & i).Value & + & 1 & Then & i & = & i & + & 1
& Worksheets( &sheet1 &).Rows(i & + & 1 & & &
&: & & & & i & + & 1).Select
& Selection.insert & Shift:=xlDown
& Worksheets( &sheet1 &).Range( &C & & & & i & + & 1).Value & = & Worksheets( &sheet1 &).Range( &C & & & & i).Value & + & 1
& i & = & i & + & 1
& Select & Case & Worksheets( &sheet1 &).Range( &B & & & & i).Value
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&&&湘教QS2-164&&增值电信业务经营许可证湘B2-求助,我写一段verilog程序总是报错,请高手帮忙
(amoBBS 阿莫电子论坛) -
求助,我写一段verilog程序总是报错,请高手帮忙
module tryfunct(clk,reset,n,result);
input reset,
always@(posedge clk)
& && &begin
& & & & & & & && &if(!reset)
& & & & & & & & & & & && & result&=0;
& & & & & & & & & & & &else
& & & & & & & & & & & && & begin
& & & & & & & & & & & & & & & && &result&=n*factorial(n)/((n*2)+1);
& & & & & & & & & & & & & & & & end
& & & & & & & & end
& & & & & & & & & & & & & & & &
& & & && &
& & & && &begin
& & & && &factorial=operand?1:0;
& & & && &for(index=2;index&=index=index+1)
& & & && && & factorial=index*
& & & && &end
endfunction
Error (10119): Verilog HDL Loop Statement error at tryfunct.v(21): loop with non-constant loop condition must terminate within 250 iterations
Error (10903): Verilog HDL error at tryfunct.v(12): failed to elaborate task or function &factorial&
Error: Can't elaborate top-level user hierarchy
module light(clk,reset,n,result);
& & & & input reset,
& & & & always@(posedge clk)
& & & & begin
& & & & & & & & if(!reset)
& & & & & & & & & & & & result&=0;
& & & & & & & & else
& & & & & & & & & & & & result&=n*factorial(n)/((n*2)+1);
& & & & end
& & & & & & & &
& & & & & & & && && && &
& & & & & & & & begin
& & & & & & & & & & & & factorial=operand?1:0;
& & & & & & & & & & & & for(index=2;index&=7;index=index+1)
& & & & & & & & & & & & begin
& & & & & & & & & & & & & & & & factorial=index*
& & & & & & & & & & & & & & & & if(index==operand)
& & & & & & & & & & & & & & & & & & & & $
& & & & & & & & & & & & end
& & & & & & & & end
& & & & endfunction
代码编译过了,不知道能不能反应实际逻辑。
C语言的思路吧,即使能够编译成功,形成的实际逻辑也会很臃肿的,楼主换种思路吧.{:smile:}.
STM_FPGA 发表于
19:33 static/image/common/back.gif
C语言的思路吧,即使能够编译成功,形成的实际逻辑也会很臃肿的,楼主换种思路吧.. ...
恩,我会的,刚刚开始学verilog,这个也是做课后习题时弄出来的问题,谢谢你
zxq6 发表于
16:45 static/image/common/back.gif
module light(clk,reset,n,result);
& & & & input reset,
谢谢你啊,我是新手
我还想问一下
for(index=2;index&=7;index=index+1)这里的index&=7只能写明确的数字么?或者是不能超过一定范围的表达吗?
shmilyeal 发表于
07:23 static/image/common/back.gif
谢谢你啊,我是新手
我还想问一下
for(index=2;index
其实我也是新手。只是不知道你所需要的逻辑,只是从你的代码来进行的修改。
确实是C语言的思路,最好还是采用并行的思想,这才是FPGA的精髓。
dbx12358 发表于
10:30 static/image/common/back.gif
确实是C语言的思路,最好还是采用并行的思想,这才是FPGA的精髓。
楼上能不能点拨一下?
由于verilog和C的语法很相近,容易用C的思维去写hdl
建议初学者从VHDL开始,语法不太一样就等于从新开始,理解了后再看verilog就很容易了
zxq6 发表于
20:48 static/image/common/back.gif
楼上能不能点拨一下?
这样的代码可能也可以综合出电路,但会是工具展开后的电路,并不是一个循环。
dbx12358 发表于
12:08 static/image/common/back.gif
这样的代码可能也可以综合出电路,但会是工具展开后的电路,并不是一个循环。 ...
工具展开电路??
是用USB_BLASTER么?
是一个课后习题,当时没想那么多,怎么样才算是一个循环呢?进行反馈?还是用状态机呢?
被FPGA一搞,最近写ARM程序也开始用状态机了。
尽量不要使用for之类的循环,FPGA很难实现的!
& && && & begin
& && && & factorial=operand?1:0;
& && && & for(index=2;index&=index=index+1)
& && && && &factorial=index*
& && && & end
endfunction
递归函数这样写行吗?
chanly1 发表于
13:19 static/image/common/back.gif
不就是我写的那个么?
不行,软件检查语法就没通过
查看完整版本:共有911位成员   人气指数 -   最新排名 -
【话题】关于c++变量自动回收的一段代码的疑问,高手帮忙!!!
07:20:37 来自:twy1997 浏览数:99次
最近在看c++ primer,看到了自动变量这里,写了个小程序来测试自动变量在函数调用借书后自动回收的问题,代码如下:
C/C++ code
int num=10;
//自动变量num
//指针p指向num
//返回指针,即num的地址
//函数结束,num的内存被回收
void main()
int* p=f();
//很奇怪,输出10(num的内存不是回收了么)
按照书上说的,应该是main函数中的p指向一个未分配的空间,但是我的结果是10,能不能告诉我为什么,还是我的代码有什么错误?
gurong1964回复于08日13点10分 
复制了指针p,只不过那个地址里面的内容还没被修改而已。所以结果还是 10
吕保涛回复于08日19点15分 
是不是因为系统的回收时间有间隔呢??
不是函数执行完,内存就马上被回收吗?
难道它还要等着你再调用另一个函数的时候才会回收的吗?
有点迷糊...
林林丽丽回复于09日07点33分 
& & & & int num=10;&
//自动变量num
& & & & int* p=&& //指针p指向num
& & & && &
//返回指针,即num的地址
& & }& & & & & & & &
//函数结束,num的内存被回收
void main()
int* p=f();&
cout & &*p;&
//很奇怪,输出10(num的内存不是回收了么)
觉得是因为返回的地址虽然被回收,但是并没有被再次使用及修改啊.
水晶花上的泪珠回复于09日14点39分 
如 11楼说所说的啊
曾靖涵回复于09日22点17分 
LZ试试这代码 就知道怎么回事了
C/C++ code
#include &iostream.h&
int num=10;
//自动变量num
//指针p指向num
//返回指针,即num的地址
//函数结束,num的内存被回收
void main()
int* p=f();
cout&&*p&&
//很奇怪,输出10(num的内存不是回收了么)
陈奕君回复于10日12点20分 
同3楼!!!
阳光派回复于10日21点05分 
因传回来 那块内存还没有被覆盖 当你再次调用的时候 就消失了
chenge_8888回复于11日12点08分 
1/ 虽然存放num的空间被释放了,但是这个num只是暂时还没有被修改,所以还是10.
2/ 指针p是存放num的地址,所以f函数返回的是num的地址。至于这个地址里面的内容,由于是局部变量被释放了,所以是个垃圾。但是p还是指向这个地址。3楼貌似说错了(将f函数的首地址存入p中)。
可以用个全局的指针指向f函数的num,然后改变这个指针指向的内容的值,看看结果就知道了:
C/C++ code
#include &iostream&
#include &conio.h&
int num=10;
//自动变量num
//指针p指向num
ptr = & // ptr中存放的是num地址
//返回指针,即num的地址
//函数结束,num的内存被回收
void main()
int* p=f();
cout&&*p&&
//很奇怪,输出10(num的内存不是回收了么)
//将ptr的地址的内容改变,也就是f()函数中num地址的内容
cout&&*p &&
// 输出0说明了p 和ptr的地址是一样的
何星仪回复于11日22点35分 
栈上变量的所谓分配和释放,只不过是改变esp的值而已,数据又没擦掉
甜甜的妈回复于12日15点42分 
不是吧,是将函数的首地址存入p吗?应该是函数的返回值吧,在这里就是自动变量num的地址.
王荆楷回复于13日10点09分 
p指向的是栈空间,*p肯定能访问。
f()返回后,释放了那段调用栈(只是改变寄存器ebp的值,那段堆栈里的内容不变),
但是*p的内容很可能会被其他函数调用修改,所以*p的值是不稳定的。
粉o0兜兜回复于13日23点45分 
程序在运行时,系统要为f函数的语句分配存储空间,开始执行main函数时,将f函数的首地址存入p中,怎么是没分配空间呢
神兵小将回复于14日20点17分 
栈虽然销毁了,但数据还没有被其他代码所使用到。
这个时候行为是不确定的。
如果再加入一些执行语句,例如进入其他的函数或声明一些新的变量后,这个地址不能再用了。
香水兰回复于15日17点35分 
我用代码说的很明确了 操作系统回收内存 不是一个固定的时间 可以说是随即
为什么每次 申请内存的时候 都要用if判断下是不是NULL 就是确定一下 有的时候局部变量没有即时被回收
C++没有垃圾回收器 所以这点做的不够好 我的代码 第二次 为什么没有正常输出 是因为编译再检索内存 发现那段内存为空 也就输出随即数了
如果内存不被覆盖 也就正常输出
tengjingyuan回复于16日16点51分 
回收了,就是说这个地方可以分配给别的什么什么使用了,但是也许还没有分配出去,样子还是老样子,就像你租房子,搬家了,在下一家人住进来之前,也许里面的陈设不会改变。没有回收的内存,就是不能分配给别的什么什么使用的,房子我还住着你,凭什么你敲开我家门就搬我家具,抢劫吗这不是。。。。
krl5614回复于17日03点42分 
9楼的代码可以证明p和ptr指向一处内存空间,但我想知道的是,为什么函数内部的局部变量,在函数调用结束以后,第一次访问还是可以访问到,能不能解释的详细一点,java转向c++初学,有点不太适应,跟java比起来,c++确实很“底层”...
mini公主回复于17日06点06分 
请照这里的方法,在两句之间加上若干代码,结果就不一样了吧。
所谓回收,并不是它不在了,它一直都在,所谓回收是指不属于这个变量了,或者说已经没有那个变量的意义了。
你能打出那个值(通过地址),只是说明那个地方还在,而且由于你的代码短,那块地方的值还没被用做他用,但是如果你加上别的代码,那个地方的值就变了,因为系统回收了,可以拿来放别的东西了。
kkwwcc回复于17日08点12分 
但是都已经“回收”了,为什么里边的东西还在呢?
现在的问题应该是:局部变量的内存到底什么时候被“真正的回收”?
吉祥88回复于17日10点11分 
下面这个例子说明*p内容被g()调用修改了。
& & & & int num=10;&
//自动变量num
& & & & int* p=&& //指针p指向num
& & & && &
//返回指针,即num的地址
& & }& & & & & & & &
//函数结束,num的内存被回收
int n = 20;
void main()
int* p=f();&
cout & &*p
& && //很奇怪,输出10(num的内存不是回收了么)
系统开发的其他话题...
热门脚本语言:有一段微机的程序,有哪位高手帮忙注释一下,很急!
有一段微机的程序,有哪位高手帮忙注释一下,很急!
微机 排序实验的程序:
'PLEASE INPUT NUMBERS:',0DH,0AH,'$'
'INPUT ERROR',0DH,0AH,'$'
0DH,0AH,'$'
100 DUP(?)
CS:CODE,DS:DATA,SS:STACK1
DX,OFFSET MESS
AX,WORD PTR ADDR[BX]
AX,WORD PTR ADDR[BX+2]
AX,WORD PTR ADDR[BX+2]
WORD PTR ADDR[BX],AX
SI,OFFSET ADDR
AX,WORD PTR[SI]
DX,OFFSET ENTER1
SI,OFFSET ADDR
DX,OFFSET ENTER1
DX,OFFSET ERROR
DX,OFFSET ENTER1
不区分大小写匿名
这个问题太迂腐了
学过的人就会
你去书上看 开关语句那吧
开关语句做这道题很简单的 在这我就不给你做了 真是的 要不不会这个你就不用学了
你要是嫌麻烦 楼下的那哥们的题也对你可以参考一下但是有FOR很麻烦所谓软件是指为方便使用计算机和提高使用效率而组织的程序以及用于开发、使用和维护的有关文档。软件系统可分为系统软件和应用软件两大类。 1系统软件 系统软件由一组控制计算机系统并管理其资源的程序组成,其主要功能包括:启动计算机,存储、加载和执行应用程序,对文件进行排序、检索,将程序语言翻译成机器语言等。实际上,系统软件可以看作用户与计算机的接口,它为应用软件和用户提供了控制、访问硬件的手段,这些功能主要由操作系统完成。此外,编译系统和各种工具软件也属此类,它们从另一方面辅助用户使用计算机。下面分别介绍它们的功能。 1)操作系统(Operating System, OS) 操作系统是管理、控制和监督计算机软、硬件资源协调运行的程序系统,由一系列具有不同控制和管理功能的程序组成,它是直接运行在计算机硬件上的、最基本的系统软件,是系统软件的核心。操作系统是计算机发展中的产物,它的主要目的有两个:一是方便用户使用计算机,是用户和计算机的接口。比如用户键入一条简单的命令就能自动完成复杂的功能,这就是操作系统帮助的结果;二是统一管理计算机系统的全部资源,合理组织计算机工作流程,以便充分、合理地发挥计算机的效率。操作系统通常应包括下列五大功能模块: (1)处理器管理。当多个程序同时运行时,解决处理器(CPU)时间的分配问题。 (2)作业管理。完成某个独立任务的程序及其所需的数据组成一个作业。作业管理的任务主要是为用户提供一个使用计算机的界面使其方便地运行自己的作业,并对所有进入系统的作业进行调度和控制,尽可能高效地利用整个系统的资源。 (3)存储器管理。为各个程序及其使用的数据分配存储空间,并保证它们互不干扰。 (4)设备管理。根据用户提出使用设备的请求进行设备分配,同时还能随时接收设备的请求(称为中断),如要求输入信息。 (5)文件管理。主要负责文件的存储、检索、共享和保护,为用户提供文件操作的方便。 操作系统的种类繁多,依其功能和特性分为批处理操作系统、分时操作系统和实时操作系统等;依同时管理用户数的多少分为单用户操作系统和多用户操作系统;适合管理计算机网络环境的网络操作系统。按其发展前后过程,通常分成以下六类: (1)单用户操作系统(Single User Operating System) 单用户操作系统的主要特征是计算机系统内一次只能支持运行一个用户程序。这类系统的最大缺点是计算机系统的资源不能充分利用。微型机的DOS、Windows操作系统属于这一类。 (2)批处理操作系统(Batch Processing Operating System) 批处理操作系统是20世纪70年代运行于大、中型计算机上的操作系统。当时由于单用户单任务操作系统的CPU使用效率低,I/O设备资源未充分利用,因而产生了多道批处理系统,它主要运行在大中型机上。多道是指多个程序或多个作业(Multi-Programs or Multi Jobs)同时存在和运行,故也称为多任务操作系统。IBM的DOS/VSE就是这类系统。 (3)分时操作系统(Time-Sharing Operating System) 分时系统是一种具有如下特征的操作系统:在一台计算机周围挂上若干台近程或远程终端,每个用户可以在各自的终端上以交互的方式控制作业运行。 在分时系统管理下,虽然各用户使用的是同一台计算机,但却能给用户一种“独占计算机”的感觉。实际上是分时操作系统将CPU时间资源划分成极小的时间片(毫秒量级),轮流分给每个终端用户使用,当一个用户的时间片用完后,CPU就转给另一个用户,前一个用户只能等待下一次轮到。由于人的思考、反应和键入的速度通常比cpu的速度慢得多,所以只要同时上机的用户不超过一定数量,人们不会有延迟的感觉,好像每个用户都独占着计算机。分时系统的优点是:第一,经济实惠,可充分利用计算机资源;第二,由于采用交互会话方式控制作业,用户可以坐在终端前边思考、边调整、边修改,从而大大缩短了解题周期;第三,分时系统的多个用户间可以通过文件系统彼此交流数据和共享各种文件,在各自的终端上协同完成共同的任务。分时操作系统是多用户多任务操作系统,UNIX是国际上最流行的分时操作系统。此外,UNIX具有网络通信与网络服务的功能,也是广泛使用的网络操作系统。 (4)实时操作系统(Real-Time Operating System) 在某些应用领域,要求计算机对数据能进行迅速处理。例如,在自动驾驶仪控制下飞行的飞机、导弹的自动控制系统中,计算机必须对测量系统测得的数据及时、快速地进行处理和反应,以便达到控制的目的,否则就会失去战机。这种有响应时间要求的快速处理过程叫做实时处理过程,当然,响应的时间要求可长可短,可以是秒、毫秒或微秒级的。对于这类实时处理过程,批处理系统或分时系统均无能为力了,因此产生了另一类操作系统——实时操作系统。配置实时操作系统的计算机系统称为实时系统。实时系统按其使用方式可分成两类:一类是广泛用于钢铁、炼油、化工生产过程控制,武器制导等各个领域中的实时控制系统;另一类是广泛用于自动订票系统、情报检索系统、银行业务系统、超级市场销售系统中的实时数据处理系统。 (5)网络操作系统(Network Operating System) 计算机网络是通过通信线路将地理上分散且独立的计算机联结起来的一种网络,有了计算机网络之后,用户可以突破地理条件的限制,方便地使用远处的计算机资源。提供网络通信和网络资源共享功能的操作系统称为网络操作系统。 (6)微机操作系统 微机操作系统随着微机硬件技术的发展而发展,从简单到复杂。Microsoft公司开发的DOS是一单用户单任务系统,而Windows操作系统则是一单用户多任务系统,经过十几年的发展,已从Windows 3.1发展到目前的Windows NT、Windows 2000和Windows XP,它是当前微机中广泛使用的操作系统之一。Linux是一个原码公开的操作系统,目前已被越来越多的用户所采用,是Windows操作系统强有力的竞争对手。 2)语言处理系统(翻译程序) 如前所述,机器语言是计算机唯一能直接识别和执行的程序语言。如果要在计算机上运行高级语言程序就必须配备程序语言翻译程序(下简称翻译程序)。翻译程序本身是一组程序,不同的高级语言都有相应的翻译程序。 对于高级语言来说,翻译的方法有两种: 一种称为“解释”。早期的BASIC源程序的执行都采用这种方式。它调用机器配备的BASIC“解释程序”,在运行BASIC源程序时,逐条把BASIC的源程序语句进行解释和执行,它不保留目标程序代码,即不产生可执行文件。这种方式速度较慢,每次运行都要经过“解释”,边解释边执行。 另一种称为“编译”,它调用相应语言的编译程序,把源程序变成目标程序(以.OBJ为扩展名),然后再用连接程序,把目标程序与库文件相连接形成可执行文件。尽管编译的过程复杂一些,但它形成的可执行文件(以.exe为扩展名)可以反复执行,速度较快。运行程序时只要键入可执行程序的文件名,再按Enter键即可。 对源程序进行解释和编译任务的程序,分别叫做编译程序和解释程序。如FORTRAN、COBOL、PASCAL和C等高级语言,使用时需有相应的编译程序;BASIC、LISP等高级语言,使用时需用相应的解释程序。 3)服务程序 服务程序能够提供一些常用的服务性功能,它们为用户开发程序和使用计算机提供了方便,像微机上经常使用的诊断程序、调试程序、编辑程序均属此类。 4)数据库管理系统 在信息社会里,社会和生产活动产生的信息很多,使人工管理难以应付,人们希望借助计算机对信息进行搜集、存储、处理和使用。数据库系统(Data Base System, DBS)就是在这种需求背景下产生和发展的。 数据库是指按照一定联系存储的数据集合,可为多种应用共享。数据库管理系统(Data Base Management System, DBMS)则是能够对数据库进行加工、管理的系统软件。其主要功能是建立、消除、维护数据库及对库中数据进行各种操作。数据库系统主要由数据库(DB)、数据库管理系统(DBMS)以及相应的应用程序组成。数据库系统不但能够存放大量的数据,更重要的是能迅速、自动地对数据进行检索、修改、统计、排序、合并等操作,以得到所需的信息。这一点是传统的文件柜无法做到的。 数据库技术是计算机技术中发展最快、应用最广的一个分支。可以说,在今后的计算机应用开发中大都离不开数据库。因此,了解数据库技术尤其是微机环境下的数据库应用是非常必要的。 2应用软件 为解决各类实际问题而设计的程序系统称为应用软件。从其服务对象的角度,又可分为通用软件和专用软件两类。 1)通用软件 这类软件通常是为解决某一类问题而设计的,而这类问题是很多人都要遇到和解决的。例如:文字处理、表格处理、电子演示等。 2)专用软件 在市场上可以买到通用软件,但有些具有特殊功能和需求的软件是无法买到的。比如某个用户希望有一个程序能自动控制车床,同时也能将各种事务性工作集成起来统一管理。因为它对于一般用户是太特殊了,所以只能组织人力开发。当然开发出来的这种软件也只能专用于这种情况
相关知识等待您来回答
电脑常识领域专家遇到编译问题,总是解决不了,向高手请教,写的是一个C语言抛出异常的代码
[问题点数:20分,结帖人crazy2005king]
遇到编译问题,总是解决不了,向高手请教,写的是一个C语言抛出异常的代码
[问题点数:20分,结帖人crazy2005king]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2007年4月 C/C++大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 中央编译局 的文章

 

随机推荐