gpt4 book ai didi

c - gfortran警告浮点异常

转载 作者:行者123 更新时间:2023-12-04 18:23:21 27 4
gpt4 key购买 nike

我正在为一些代码使用 gfortran。一段时间以来,我一直在编译

-ffpe-trap=zero,overflow,invalid

试图追捕一些错误。这会导致我的程序立即停止执行。在某些情况下,FPE 可能没问题,因此会出现如下标志:
-ffpe-warn=zero,overflow,invalid

会非常有用。 gfortran(或任何其他编译器)是否提供类似的东西?如果没有,是否有任何解决方法?我目前的想法是创建一个 C 函数来注册一个信号处理程序来写出警告,尽管我不知道如何去做。

最佳答案

我不知道遇到浮点异常时的警告方式。但是 gfortran 和 ifort 都有信号处理例程。例如,参见 signal 的 gfortran 文档。和
英特尔 Fortran 编译器 User and Reference Guides (warning: large PDF) (见第 410 页病房)。

You can establish one of the following actions for a signal with a call to signal:

  • Ignore the specified signal (identified by number).
  • Use the default action for the specified signal, which can reset a previously established action.
  • Transfer control from the specified signal to a procedure to receive the signal, specified by name.

在您的情况下,您可能希望编写一个函数来在发生浮点异常时执行某些操作(例如打印文件名/行号),并使用上面列表中的第三个选项。
不幸的是,这不是很便携:看看 this page有关各种编译器的信号处理示例。如果您愿意,可以在预处理器宏中包装一些代码
  • 使用多个编译器编译
  • 仅在设置了某些预处理器标志时才使用信号处理例程(参见 -NDEBUG )

  • 更新:最终是 ieee_exceptions 的异常处理工具正如 High Performance Mark 所建议的,内在模块将是执行此操作的可移植方式。

    关于c - gfortran警告浮点异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10210759/

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