【发布时间】:2013-12-03 23:30:14
【问题描述】:
我正在编写一个允许用户记录信息的模块。我想提供一个记录字符串消息的接口,可以称为
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) 替换为call m_log(msg, __FILE__, __LINE__)?
由于这种替换,将调用记录器模块中的不同子例程subroutine m_log(msg, filename, linenum)。
如果我使用像 #define m_log(msg) m_log(msg,__FILE__,__LINE__) 这样的宏,则必须将它添加到每个使用记录器的用户文件中。
另外,我不想强制用户明确传递__FILE__ 和__LINE__。
有没有办法做到这一点?还是完全有其他选择?
提前致谢
编辑: 我讨论了 comp.lang.fortran。添加链接以供参考。 here
【问题讨论】:
-
您能否在此处添加一些说明或示例来说明您要实现的目标?我很困惑。
-
基本上我如何用
m_log(msg,__FILE__,__LINE__)自动替换m_log(msg),也许使用宏。 -
__FILE__和__LINE__在哪里出现?当您说您不希望用户显式传递参数时,您的意思是用户会将它们定义为环境变量或宏,而不是将它们放在函数调用中? -
__FILE__和__LINE__是编译器宏。