gpt4 book ai didi

fortran - 第 5 列和行尾的 & 符号

转载 作者:行者123 更新时间:2023-12-01 11:01:09 25 4
gpt4 key购买 nike

我今天遇到了一些看起来像这样的代码:

      subroutine sub(hello,world,this,routine,takes,a, &
& crazy,large,number,of,arguments, &
& so,many,that,it,gets,split,across,four, &
& lines)

似乎第 5 列中的和号是为了防止用户
想用 f77 编译器编译代码——我的问题是
这是合法的(符合标准的)fortran 90 代码。我想
由于尾随符号,它可能不是符合标准的 f77 代码
也不在第 73 列中……但如果是,这是否是使自由格式和固定格式编译器满意的标准方法?换句话说,fortran 90 标准是否说行中间的 & 被简单地忽略(或类似的东西)?

最佳答案

& 是 Fortran 90 自由格式的延续字符。编译器的行为就像通过将尾随 & 的位置与下一行的前导 & 匹配来连接行一样。由于 Fortran 很乐意忽略标记之间的空格,因此您发布的内容是一种跨多个源文件行编写非常长的语句的方法。 (OP 可能已经知道这一切,其他读者可能不知道。)

您展示的代码片段绝对是符合标准的 Fortran 90。该标准将尾随 & 定义为连续字符。如果要跨行拆分标记(例如变量名称)或“字符上下文”(例如字符串文字),则继续运行的行必须以 & 开头,并且不能有空格插入到行开始 & 之后的字符序列中。我认为您发布的内容偷偷摸摸地符合标准,理由是连续的 &s 可能被认为不会将任何空格引入现有的空格中。

但是,您的代码段中不需要以 &s 开头的行。

您的代码段绝对不是符合标准的固定格式 FORTRAN77。然而,大多数现代 Fortran 编译器,除非您另有指示,否则会对这种“不符合标准”但“含义明显”的代码采取轻松的态度,并非常愉快地编译它。除非,也就是说,您尝试了一些奇怪的事情,例如将自由格式代码添加到现有的固定格式源文件中,这只是要求编译器适应。

编辑

我的原始答案未能回答 OP 的问题,即将 &s 移动到第 73 列作为创建代码以保持固定和自由格式编译愉快的策略。在 FORTRAN77 中,连续行由连续行的第 6 列中的字符(任何字符)标记。那个版本的语言不需要在行尾有任何字符被继续。同样,在第 73 列中放置 & 并没有发现任何问题。正如 OP 在评论中指出的那样,固定格式的 Fortran 忽略第 73-80 列中的任何字符,而穿孔卡片(啊,快乐的日子)只有 80列。

但我也看不到任何推荐这种方法的东西。我认为最好不要在同一个源文件中混合自由格式和固定格式。所有当前的 Fortran 编译器都将在同一个编译中编译这两种形式。但是,如果您想继续将两者混合,请随意这样做。

关于fortran - 第 5 列和行尾的 & 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584561/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com