我试图在fortran中写一些数据...
#include <iostream>
#include <array>
#include <functional>
template<typename Container, typename T>
void notify( Container& observers, T value )
{
for ( auto& observer : observers )
observer( value );
}
// updateX can be defined in another unit but exposed in a header
void update1( int i )
{
std::cout << "observer 1:" << i << std::endl;
}
void update2( int i )
{
std::cout << "observer 2:" << i << std::endl;
}
const std::array<std::function<void(int)>, 2> observers {
[](int i) { update1( i ); },
[](int i) { update2( i ); }
};
int main()
{
notify( observers, 3 );
return 0;
}
但是我总是在(1)处收到错误消息意外的属性声明语句
有人知道为什么吗?
答案 0 :(得分:0)
正如其他人已经指出的那样,您应该使用新的fortran标准。如果这样做,您可以删除用来表示连续行的“ +”(应该在第6列中),而应在该行的末尾添加一个&符“&”。 然后程序编译并运行。但是由于X和W是单精度,因此您在数据语句中使用了太多数字。使用隐式none并声明所有变量。并获得一本教科书。
答案 1 :(得分:0)
在下面,您发现对代码进行了较小的更新,从而可以对其进行编译:
program Problemless
dimension X(8), W(8)
data X /0.0950125098D0, 0.2816035507D0, 0.4580167776D0,
+ 0.6178762444D0, 0.7554044083D0, 0.8656312023D0,
+ 0.9445750230D0, 0.9894009349D0/
data W /0.1894506104D0, 0.1826034150D0, 0.1691565193D0,
+ 0.1495959888D0, 0.1246289712D0, 0.0951585116D0,
+ 0.0622535239D0, 0.0271524594D0/
D = 0.D0
do NJ=1,8
D = D + X(NJ) + W(NJ)
enddo
write(*,*) D
end
您的代码以固定源代码形式编写(请参见Fortran standard的6.3.3节)。这意味着您不能在第72列之外进行任何操作。我所做的就是在上面纠正此错误。
如果您正在学习fortran,建议不要使用固定格式,而要使用免费格式。
此帖子无需投票