首页 > 解决方案 > Fortran 中的 free() 数据类型错误

问题描述

我被要求使用此处提供的库,并且我按照说明在 Windows 中构建它,这些位于此处

现在,我按要求下载了 Intel Parallel Studio XE,并按照说明进行了所有操作,但代码内部存在问题,我无法完全弄清楚如何解决它。编译器说Error #6362: The data type(s) of the argument(s) are invalid.

引起麻烦的行都是相同的:call free(adr(n))

并且声明adr(n)是我不知道它是否正确,因为我有一段时间没有接触过 FORTRAN 77。它是:adr(n) = malloc(length*ipa)whereipalength被正确定义,但我不知道是否adr(n)已经在头文件的其他地方定义了。我应该在顶部添加一个声明(我听说 FORTRAN 需要在顶部声明)还是应该做其他事情?我所知道的是adr(n)应该是length*ipa字节,但如果它应该是特定类型则不是,而且我不记得如何char * adr = (char *) malloc(length*ipa);按照我在 C 中所做的那样做一些事情。

标签: fortranintel-fortran

解决方案


这是在https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/801638询问和回答的。正在使用的源将变量声明为整数 *8(非标准),但正在进行 32 位构建。由于英特尔编译器将 malloc 和 free 视为内在函数,因此它检测到了不匹配。


推荐阅读