- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我通常不编写 C++ 代码,但我的一个奇怪的 comp sci friend 厌倦了看我精彩的 FORTRAN 程序,并要求我用 C++ 重写其中一个,因为他更喜欢我的 C++ 代码。 (我们在这里赌钱。)确切的说法是它需要在现代 C++ 编译器中可编译。也许他讨厌好的 conio.h - 我不知道。
现在我意识到有很多用 C++ 编写的非常好的方法,但我要在这里通过尝试使我的 C++ 版本尽可能具有 FORTRAN 风格来获得个人胜利。对于奖励积分,这可能会在我转换代码时为我节省一些时间和精力。
所以!这让我想到了以下相关查询:
在 goto 上:
在 longjmp 上:
现在我主要关心的是让计算的 goto 工作。 看起来我可能会使用 longjmp 来完成这项工作,因为 void 指针数组不是C++ 标准,但 GCC 特定的扩展。
最佳答案
我会咬牙接受反对票。
我严重怀疑你的 friend 是否会发现用 C++ 编写的 Fortran 更容易阅读(如果你大量使用 goto 和 longjmp,这实际上是你会得到的),他甚至可能会发现它更难理解。 C++ 语言与 Fortran 完全不同,我真的认为您不应该尝试从 Fortran 直接转换为 C++。它只会使 C++ 更难维护,您不妨保留现有的代码库。
goto
:你设置一个标签(my_label:
)然后使用goto命令goto my_label;
这将导致你的程序流程在 goto 之后的语句处执行。您不能跳过变量的初始化或函数之间的初始化。您无法创建 goto
目标数组,但您可以创建要跳转到的对象或函数指针数组。
longjmp
:如果你只有一个函数,没有理由更喜欢 longjmp
而不是 goto
。但是,如果你只有一个函数,那么你真的不是在编写 C++,从长远来看,你会更好地维护你的 Fortran。
关于c++ - 如何在 C++ 中(计算)goto 和 longjmp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7588079/
我是一名优秀的程序员,十分优秀!