fortran预处理也是借鉴c语言,可以在头文件或程序中通过#define来预定义宏,或在编译选项中添加-D…选项来预定义。预处理通常包括
文件包含
1宏定义
1条件编译
12345......
以下通过一个debug模块来说明预处理的应用。
debug
|
|
该模块主要定义了一个debug_error函数以及一个debug_level_变量,通过设置debug_level_可以调节debug的层级。该模块中的函数在实际程序中基本上都不会用到,主要使用的以下头文件中定义的宏。
debug.h
|
|
在该头文件中主要定义了三个宏命令
- info(unit,format)
和write(unit,fmt) 的功能一样,但只输出 unit < debug_level_ 的消息,并且当 unit < 1时,输出到 error_unit, 当 0 < unit <= debug_level_ 时,输出到 output_unit.
- error(X)
输出出错消息,并自动定位在哪个文件哪一行。
- assert(X)
判断 x 是否为真,如果不为真,则输出错误消息。
测试
info
|
|
结果
|
|
可以看出 level = 3 的info信息没有输出。
error
|
|
结果
|
|
会定位错误出现的文件以及所在行。
assert
|
|
结果
|
|
可以定位出错未知以及错误信息。
其它
在fortran 中可以通过以下语句来输出错误信息也会定位错误未知,并且会追踪具体出错的地方。12stop "message"error stop "error message"