在调整了这个答案之后,我编写了以下循环来简单地在名为“gdb_script.gs”的脚本中在 gdb 中打印一个数组。我究竟做错了什么?
set $end=64
while ($i<$end)
print $i
print volfrac($i, :, 1)
set $i=$i+1
end
Run Code Online (Sandbox Code Playgroud)
其中 volfrac(:,:,:) 是一个 Fortran 数组。我收到错误:
gdb_script.gs:14: Error in sourced command file:
A syntax error in expression, near `<$end)'.
Run Code Online (Sandbox Code Playgroud) 我是python爱好者,并且安装了pycharm可以在多个项目上工作。每次启动一个新项目时,pycharm社区版都会创建一个没有任何软件包的新virtualenv。因此,对于每个小项目,我不得不一次又一次地安装numpy,matplotlib,scikit等。这很烦人。如何禁用此功能?
我试图搜索此问题,但没有找到。抱歉,如果它是重复的。
假设我有一个如下的 Fortran 程序:
character*30 changed_string1
changed_string1="hello"
write(*,"(A)")changed_string1(1:3)
end
Run Code Online (Sandbox Code Playgroud)
我想用引号打印字符串,以便我可以准确地看到前导和尾随空格。这该怎么做?
考虑以下短程序(Fortran95):
write(*,*) shape(2)
end
Run Code Online (Sandbox Code Playgroud)
我尝试使用 Fortran 编译器 (gfortran 4.8.2) 和 Absoft Pro Fortran 13.0.0 (mac) 运行它,我得到以下结果:
local $./a.out
local $
Run Code Online (Sandbox Code Playgroud)
更新:还尝试了 gfortran 4.4.7(具有相同结果的 linux。
以下是gfortran 中形状的文档说:
Run Code Online (Sandbox Code Playgroud)RESULT = SHAPE(SOURCE [, KIND])参数:
SOURCE 应为任何类型的数组或标量。如果 SOURCE 是一个指针,它必须被关联并且必须分配可分配的数组。返回值:
秩为 1 的 INTEGER 数组,其元素数与 SOURCE 的维数相同。结果数组的元素对应于 SOURCE 沿各自维度的扩展。如果 SOURCE 是标量,则结果是大小为零的排名一的数组。如果 KIND 不存在,则返回值具有默认整数种类,否则为指定种类。
换句话说,我只看到一个换行符而不是结果。它不应该告诉我形状是 1 吗?
这是源代码(我们称之为test4.F):
do 10 i=1
write(*,*) i
10 continue
end
Run Code Online (Sandbox Code Playgroud)
随着gfortran:
$gfortran test4.F
$./a.out
-259911288
Run Code Online (Sandbox Code Playgroud)
与ifort:
$ifort test4.F
$./a.out
0
Run Code Online (Sandbox Code Playgroud)
我知道语法不正确.所以两者都应该抛出编译时错误.