小编Ste*_*KKK的帖子

如何编写通用包装程序以在C ++ 14中调用Fortran函数(按引用调用->按值调用)

通常,我必须从我的C ++代码中调用一些Fortran例程。就我而言,C标头始终可用,并且包含诸如

double fFortran(int* a, int* b, double* someArray, int* sizeOfThatArray)
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否可以编写通用的C ++ 14包装器fortranCall(也许使用模板元编程),该包装器在必要时获取地址,然后像这样调用fortran函数

double someArray[2] = {1, 4};
double result = fortranCall(fFortran, 4, 5, someArray,
    sizeof(someArray) / sizeof(someArray[0]));
Run Code Online (Sandbox Code Playgroud)

应该等于

double someArray[2] = {1, 4};
int sizeOfSomeArray = sizeof(someArray) / sizeof(someArray[0]);
int a = 4;
int b = 5;
double result = fFortran(&a, &b, someArray, &sizeOfSomeArray);
Run Code Online (Sandbox Code Playgroud)

我认为正确的解决方案涉及参数包,但我无法弄清楚如何迭代一个参数包并在需要时获取引用。

c++ fortran c++14

5
推荐指数
1
解决办法
120
查看次数

标签 统计

c++ ×1

c++14 ×1

fortran ×1