1.先看下图,先#10,后声明struct
编译器会报错,只说语法错误。
2.把信号声明放到前面两行,#10下移。
编译通过。
原因:
信号声明和信号定义,可以理解为“0”时刻,被编译器解析。但是第一个和#10有冲突,所以报错。修改后先声明,后延时,遂通过。
属于编译原理知识,那么C语言的变量声明不是这样,有一种impromptu的感觉。并不是严格要求定义在最前面,why?据说老的编译器也会报错,后来改了。。。。
3.同样下面的片段也是有问题的,因为在display之后又有新的信号声明。原因:display已经开始仿真,但是要求在仿真之前compiler吃掉所有的signal declaration,在后面又有当然error撒!!!
4.但是最严格的定义应该是下面这样,声明在initial 外面
这样想delay就delay咯!!!!