fortran - 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)
whereipa
和length
被正确定义,但我不知道是否adr(n)
已经在头文件的其他地方定义了。我应该在顶部添加一个声明(我听说 FORTRAN 需要在顶部声明)还是应该做其他事情?我所知道的是adr(n)
应该是length*ipa
字节,但如果它应该是特定类型则不是,而且我不记得如何char * adr = (char *) malloc(length*ipa);
按照我在 C 中所做的那样做一些事情。
解决方案
这是在https://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/801638询问和回答的。正在使用的源将变量声明为整数 *8(非标准),但正在进行 32 位构建。由于英特尔编译器将 malloc 和 free 视为内在函数,因此它检测到了不匹配。
推荐阅读
- docker - 卡夫卡 | 错误:无法打开 HTTP 服务器:socket.error 报告 errno.ENOENT (2)
- python - 具有相反严重性级别的分类值的多列标准化
- postgresql - 如何将 9 个随机行从一个表插入另一个表,同时在 Postgresql 中设置其他列?
- html - BootstrapVue:创建 2 个底部导航栏粘在顶部的导航栏?
- image - 从网页导出 SVG 图像
- geolocation - Mapbox GL JS - 如何检查一个人是否在某个区域内,如果他在,则显示一条消息
- r - 将所有二进制 (0, 1, NA) 变量转换为因子
- python - 帮助医疗保健,python 代码根据质量计算 AR 中有多少日托有什么容量
- c# - 我如何使用 system.reactive 来执行 do 而它使用的是每次迭代中的值?
- php - preg_replace 删除样式文本/css 标签