Cod*_*ker 12 c++ goto longjmp language-extension setjmp
我通常不会编写C++代码,但我的一个奇怪的comp sci朋友厌倦了查看我精彩的FORTRAN程序并挑战我用C++重写其中一个,因为他更喜欢我的C++代码.(我们在这里投入资金.)确切的术语是它需要在现代C++编译器中进行编译.也许他讨厌一个好的conio.h - 我不知道.
现在我意识到在C++中有很好的写作方式,但是我想通过尽可能使我的C++版本成为FORTRAN-esque来获得个人胜利.对于奖励积分,当我转换代码时,这可能会节省一些时间和精力.
所以!这带我进入以下相关查询:
在gotos:
在longjmp上:
现在我的主要关注点是为此计算goto.看起来我可能会使用longjmp来完成这项工作,因为void指针数组不是C++标准的一部分,而是GCC特定的扩展.
我会咬人并采取行动.
我非常怀疑你的朋友会发现使用C++编写的Fortran更容易(如果你使用goto和longjmp,这将是你将获得的有效内容)阅读,他甚至可能会发现它更难以理解.C++语言与Fortran有很大不同,我认为你不应该尝试从Fortran到C++的直接转换.它只会让C++更难维护,你可能会继续使用现有的代码库.
goto:你设置一个label(my_label:),然后使用goto命令goto my_label;,这将导致你的程序流在goto之后的语句中执行.您无法跳过变量的初始化或函数之间的跳转.您无法创建goto目标数组,但可以创建要跳转到的对象或函数指针数组.
longjmp:没有理由,更喜欢longjmp了goto,如果你只有一个功能.但是,如果你只有一个函数,那么你真的不是在编写C++,从长远来看,只要维护你的Fortran就会更好.
| 归档时间: |
|
| 查看次数: |
2915 次 |
| 最近记录: |