Fortran Coder

标题: 赋值出现问题 [打印本页]

作者: Tobebetter    时间: 2020-6-7 10:11
标题: 赋值出现问题
本帖最后由 Tobebetter 于 2020-6-7 10:16 编辑

报错信息

/root/workspace/AM3/exp/../src/land_lad2/shared/nf_utils/getput.inc:419.9:
    包含在/root/workspace/AM3/exp/../src/land_lad2/shared/nf_utils/ nfu.F90:544:

  iret = nf_put_vara_NF_TYPE(ncid,varid,start,count,var)
         1
错误:函数(n)的函数'nf_put_vara_nf_type'没有IMPLICIT类型

NF_TYPE在之前定义为double,然后其前面有这些索引语句:

#define CONCAT3(op,T,D)op / ** / T / ** / D
#define CONCAT2(op,T)op / ** / T

#define NF_GET_VARA_(T) CONCAT2(nf_get_vara_,T)
#define NF_GET_VARA_T NF_GET_VARA_(NF_TYPE)

的#define NF_PUT_VARA_(T) CONCAT2(nf_put_vara_,T)
的#define NF_PUT_VARA_T NF_PUT_VARA_(NF_TYPE)

好像这个Ť变成nf_type了,并没有变成double。


作者: fcode    时间: 2020-6-7 10:30
这是 nf_put_vara_NF_TYPE 的问题,跟其他的无关。这一堆

#define CONCAT3(op,T,D)op / ** / T / ** / D
#define CONCAT2(op,T)op / ** / T

#define NF_GET_VARA_(T) CONCAT2(nf_get_vara_,T)
#define NF_GET_VARA_T NF_GET_VARA_(NF_TYPE)

的#define NF_PUT_VARA_(T) CONCAT2(nf_put_vara_,T)
的#define NF_PUT_VARA_T NF_PUT_VARA_(NF_TYPE)


都是无关的内容。

定义一下就行了,比如
integer :: nf_put_vara_NF_TYPE

PS :   netcdf 的早期版本在现在的编译器看来,是有问题的
作者: Tobebetter    时间: 2020-6-7 12:57
有关的吧,这些都是预处理,就是源代码里面是从NF_PUT_VARA_T  ->变成nf_put_vara_NF_TYPE->nf_put_vara_double,这里的NF_TYPE是外部给的一个定义。
作者: Tobebetter    时间: 2020-6-7 12:58
我出现的问题其实就是最后一步没成功赋值,有一个类似的操作都能赋值成功,就很诡异。
作者: Tobebetter    时间: 2020-6-7 18:23
fcode 发表于 2020-6-7 10:30
这是 nf_put_vara_NF_TYPE 的问题,跟其他的无关。这一堆

#define CONCAT3(op,T,D)op / ** / T / ** / ...

就是有nf_put_vara_double的定义,但是它之前值赋值没成功,导致后面这个NF_TYPE没有变成double




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2