|
|
1
19
使用
|
|
|
2
36
没有什么内在的错误
使用
如果要将此代码添加到已包含状态机的现有代码库中,我建议您遵循已在使用的约定。 |
|
3
15
Ragel 如果我想给老板留下好印象的话。 这种方法的主要好处是,您能够在更高的抽象级别上描述您的状态机,并且不需要担心是使用goto还是switch。更不用说在Ragel的特殊情况下,您可以自动获得FSM的漂亮图表,在任何点插入操作,自动最小化状态量和各种其他好处。我提到过生成的fsm也非常快吗?
|
|
|
4
10
我会使用一个变量来跟踪您所处的状态,并使用一个开关来处理它们:
|
|
|
5
8
Goto不是必要的邪恶,我不得不强烈反对丹尼斯,是的Goto可能是一个坏主意,在大多数情况下,但有使用。goto最大的恐惧就是所谓的“spagetti代码”,即无法追踪的代码路径。如果您可以避免这种情况,并且代码的行为总是很清楚,并且您没有使用goto跳出函数,那么就没有什么不利于goto的了。只要小心使用它,如果你想使用它,真的评估情况,并找到更好的解决办法。如果你不能做到这一点,goto可以使用。 |
|
|
6
8
避免
在实际工程问题中,goto的使用空间非常有限。学术界和非工程界人士在使用上不必要地绞尽脑汁
正确的解决方案通常是首要目标。使其正确 和 可维护性(通过最小化复杂性)有许多生命周期好处。先让它起作用,然后逐步清理,最好是通过简化和去除丑陋。 |
|
|
7
4
我不知道你的具体代码,但有这样的原因吗:
编辑:
所有这些
|
|
|
8
1
Dragon book
":
Compilers, Principles-Techniques-Tools
|
|
|
9
1
但除此之外,应该没有太大的区别。不管怎样,如果你没有把它分解成函数,并且不是每个状态都使用/初始化所有的局部变量,你可能会得到一堆乱七八糟的代码,不知道哪些状态改变了哪些变量,这使得调试/推理变得非常困难。
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |