我正在将 Fortran 77 代码翻译成 C++,而 Fortran 77 使用通用块。我正在尝试用结构替换公共块,然后我将用函数中的值填充这些块,然后调用两者以在我的主程序中使用。目前我的代码如下所示:
#include <iostream>
#include <cmath>
using namespace std;
// data_list
struct data_list {
double g, dw, Vel, M, dt, N;
int Ioutp1, Ioutp2;
} values;
void data (data_list& val) {
val.g = 9.80665;
val.dw = 0.05;
val.Vel = 20.0;
val.M = 128;
val.dt = 0.05;
val.N = 4000;
val.Ioutp1 = 1;
val.Ioutp2 = 1;
}
void Pierson_Moskowitz(data_list& val) {
/*
* Calculation of properties of Pierson_Moskowitz Spectrum
*/
double Ug, Hs, A, B, Std;
cout << values.Vel << "\t\t" << values.g;
Ug = values.Vel/values.g;
cout << Ug << endl;
}
int main() {
data(values);
//float dw = values.dw = 0.05;
cout << values.dw << endl;
}
这只是一个测试,因为目前我的 main 除了打印一个值之外什么也没做。我想要的是在我的data
函数中给定值的变量能够在整个代码中使用。目前,有两件事我很困惑:
1) 我的Pierson-Moskowitz
功能没有为 Ug 打印任何内容。我不明白为什么不呢?2)我不确定我什至需要这个data
功能。本质上,我正在翻译的 Fortran 代码使用子例程将值分配给公共块中的变量。我正在尝试通过使用结构然后使用函数来填充值来做类似的事情。
这段代码很短,我打算将所有内容都保存在一个文件中。任何帮助都非常感谢!