fortran - 将预处理指令引入 Cray 编译器的 Fortran 代码的正确方法
问题描述
我正在尝试使用 Cray 编译器编译 Fortran 代码。我在代码中有一个标准的预处理 ifdef 块:
#ifdef DEBUG
! print extra info
#endif
克雷一点也不喜欢。它告诉我
#ifdef DEBUG
^
ftn-100 crayftn: ERROR BALANCE_DATA, File = balance_data.f90, Line = 9, Column = 1
This statement must begin with a label, a keyword, or an identifier.
#endif
^
ftn-100 crayftn: ERROR BALANCE_DATA, File = balance_data.f90, Line = 11, Column = 1
This statement must begin with a label, a keyword, or an identifier.
有谁知道我怎样才能让 Cray 编译器满意?(顺便说一句,这段代码可以用 intel 和 gcc 很好地编译。)
解决方案
这些宏不是标准 Fortran 的一部分。必须以某种方式告诉编译器执行预处理器(cpp
或fpp
自定义的东西,它们确实不同)。
对于 Cray,您应该-e Z
在文件扩展名中使用或使用大写 F。始终查阅任何新编译器的手册。但是, crayftn 的手册页非常不完整,它确实提到了该选项,但只是间接提及。必须查阅完整的文档,例如在RussF 提供的链接中。
推荐阅读
- regex - 需要正则表达式帮助来匹配名称
- sas - 循环数组,保留值
- node.js - 执行 mongoose/mongodb 查询的副作用
- dataframe - SQL 和 withColumn 之间的性能
- java - Spring-boot 和 Keycloak 集成
- javascript - JS中的就地重定向
- c++ - 如何修复检测到堆损坏:在正常块之后
- javascript - 为什么我在 w3c 标准中找不到 Element.after() 方法?
- django - Django:使用 API 和 Pickle 发布 Pandas 数据帧或如何“hello world”序列化程序和查看 Django REST 框架中的二进制数据
- python-3.x - 如何修复这个 dict 和 postgreSQL