我正在编写一个模块,允许用户记录信息。我想提供一个界面,用于记录字符串消息,可以通过以下方式调用:
在文件m_logger.f90中,我将有:
在文件 main.f90 中,用户将会...
现在我应该如何用
call m_log(msg)
在文件m_logger.f90中,我将有:
module m_logger
..
subroutine m_log(msg)
..
end module
在文件 main.f90 中,用户将会...
program main
use m_logger
call m_log(msg)
end program
现在我应该如何用
call m_log(msg, __FILE__, __LINE__)
替换call m_log(msg)
? 由于这种替换,将调用记录器模块中不同的子例程subroutine m_log(msg, filename, linenum)
。如果使用宏#define m_log(msg) m_log(msg,__FILE__,__LINE__)
,则必须将其添加到使用记录器的每个用户文件中。此外,我不想强制用户明确传递__FILE__
和__LINE__
。是否有方法可以做到这一点?或者是否有其他替代方案?提前致谢。编辑:我在comp.lang.fortran上进行了讨论。 添加一个链接供参考。here
m_log(msg)
为m_log(msg,__FILE__,__LINE__)
呢? - Korizon__FILE__
和__LINE__
是什么意思?当你说不想让用户显式地传递参数时,是指用户会将它们定义为环境变量或宏,而不是放在函数调用中吗? - Xiaolei Zhu__FILE__
和__LINE__
是编译器宏。 - Korizon