Fortran Coder

标题: 求助argument's data type is incompatible with this intrinsic procedure [打印本页]

作者: khd21    时间: 2023-3-9 09:20
标题: 求助argument's data type is incompatible with this intrinsic procedure
[Fortran] 纯文本查看 复制代码
Program subString
  implicit none
  character(len=20):: str = "hello, world!"
  write(*,*) str(2:2)
  write(*,*) str(2:7)
End program subString

为啥会
Warning:This argument's data type is incompatible with this intrinsic procedure; procedure assumed EXTERNAL.  [INT]
报错:This name does not have a type, and must have an explicit type.   [INT]
报错:Compilation Aborted (code 1)


求解



作者: Transpose    时间: 2023-3-9 11:19
运行的是不同的工程
作者: fcode    时间: 2023-3-9 15:38
对编译环境的操作可能还不太熟悉,看起来像是:
你打开了一个源代码 a,但是工程中编译的却是另一个源代码 b
作者: khd21    时间: 2023-3-9 23:19
fcode 发表于 2023-3-9 15:38
对编译环境的操作可能还不太熟悉,看起来像是:
你打开了一个源代码 a,但是工程中编译的却是另一个源代码  ...

啊,没太看懂,可以详细讲讲吗,多谢
作者: fcode    时间: 2023-3-10 08:43
khd21 发表于 2023-3-9 23:19
啊,没太看懂,可以详细讲讲吗,多谢

Fortran 是一种编程语言(而不是软件),市面上有很多款支持 Fortran 语言的编译器产品。例如 intel fortran , gfortran , g95 等等。

他们分别有各自的操作方法。都大同小异,但也略有区别。

从你给出的有限的信息来看,你很可能使用的是 code blocks 这个编译环境。(我对他不太熟悉,所以不一定能直接帮到你)

你给出的代码完全没有问题,但你给出的错误提示却指出, int 函数的参数类型错误。而代码中完全没有 int 函数的使用。

所以,我们猜测是,你对编译环境不熟悉,操作上存在一些问题。

通常来说,编译环境(例如你可能使用的 code blocks)不会编译你正在打开的源代码。而是你添加到当前正在编辑的“工程”中存在的代码。

所以,你可能正在打开编译源代码a,也就是你在帖子里给出的代码。
但你的工程中,存在的却是源代码b,也就是存在问题的,使用了 int 函数的代码。

注意,同一个工程中,允许有多个源代码。(这样较大型的软件,可以把大量代码分类到不同文件中管理)

所以,你需要了解一下你使用的编译环境的用法。注意看界面上是否有工程管理器?类似 project manager 之类的窗口。
一般弹出错误提示的地方,还会提示你在哪个源代码文件发生了错误,检查一下这个源代码文件是否是你的正在编辑的这一个。
例如,你编译的是 source2.f90 文件,但你打开的其实是 main.f90 之类的。

再次提醒你,不同的编译环境(编译器产品),他们的操作方法略有区别。
(就像不同品牌的电视机,如何使用遥控器一样,大概相同,也有区别)

在编译环境的操作问题上,别人挺难帮助你的。这个需要自己去琢磨一下,但不必太担心,这不会很难。就像你学习使用word一样,只是需要一个熟悉的过程而已。




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