Fortran Coder

标题: 我来问个非主流的问题:read和write的默认参数 [打印本页]

作者: liudy02    时间: 2020-7-22 02:16
标题: 我来问个非主流的问题:read和write的默认参数
内置的read和write函数可以用*号代表默认参数
但是自己写的函数似乎不能实现这种功能,自编函数默认参数只能靠放在后面不输入参数时用默认值
有没有可能实现read和write这样的*代表默认参数值的功能呢,感觉很好玩的样子
作者: fcode    时间: 2020-7-22 08:42
read 和 write 是语句(statement)而不是内置函数(intrinsic function)
作者: liudy02    时间: 2020-7-22 09:31
fcode 发表于 2020-7-22 08:42
read 和 write 是语句(statement)而不是内置函数(intrinsic function)

好吧,其实也知道这个区别
但是还是觉得有这种功能就好了
顺便想说下,从编译的角度,这种语句和内置函数是什么样的区别啊……
作者: fcode    时间: 2020-7-22 10:54
语句是语法规定的,可以不遵循函数调用的规则和形式。
内部函数虽然也是语法规定的,但遵循函数调用的规则和形式。

底层实现,应该都离不开函数。但是编译器可以根据语句的不同选择调用不同的运行时函数。

比如对于 Intel Fortran。
同样是 read 语句,如果写成 read(*,*) 编译器会调用 for_read_seq 这个运行时函数。
而写成 read(*,"(a3)") 编译器会调用 for_read_seq_fmt 这个运行时函数。
等等等等
作者: liudy02    时间: 2020-7-22 11:11
fcode 发表于 2020-7-22 10:54
语句是语法规定的,可以不遵循函数调用的规则和形式。
内部函数虽然也是语法规定的,但遵循函数调用的规则 ...

这样子,相当于编译器将read/write形式上的不同参数分流到不同的函数了
类似于通用名函数,却不是fortran语法内能实现的
好的,非常感谢站长
作者: fcode    时间: 2020-7-22 13:05
是的,语法层次没法实现。
(除非你自创一个 Fortran++ 语言,并书写它的编译器)




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2