Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何从C++;_C++_Fortran - Fatal编程技术网

C++ 如何从C++;

C++ 如何从C++;,c++,fortran,C++,Fortran,我试图从C++调用FORTRAN“打开”函数(从LIGBGROTRAN导入。“打开”函数不是直接从C++调用,因为它需要一个命名参数列表,与具有直接的参数列表相对应。在Fortran中,这些命名参数可以按任何顺序调用,并且可以排除任何参数 Fortran示例: OPEN(UNIT=11, FILE="my_file.dat", ERR=90) #and there are many other possible arguments 在C++中: extern "

我试图从C++调用FORTRAN“打开”函数(从LIGBGROTRAN导入。“打开”函数不是直接从C++调用,因为它需要一个命名参数列表,与具有直接的参数列表相对应。在Fortran中,这些命名参数可以按任何顺序调用,并且可以排除任何参数

Fortran示例:

OPEN(UNIT=11, FILE="my_file.dat", ERR=90)   #and there are many other possible arguments
在C++中:

extern "C"
{
    void open(long* UNIT, <named arguments>);
}

int main(int argc, const char * argv[])
{
    long unit_num = 11;
    char my_file[] = "my_file.dat";
    open(&unit_num, my_file); //not sure how named arguments are specified here either
}
extern“C”
{
空开(长*单位,);
}
int main(int argc,const char*argv[]
{
长单位_num=11;
char my_file[]=“my_file.dat”;
open(&unit_num,my_file);//也不确定此处如何指定命名参数
}

<>你如何在C++中指定这些命名参数?如果这是不可能的,还有其他方法让FORTRAN打开文件并给我单位号,或者使用FOpenD打开文件,并以某种方式与FORTRAN运行时共享它(获取该文件的单位号)。< /P>为什么您想在C++中打开FORTRAN单元/文件?你不能真正地(明智地)用C++中的单元做任何事情。如果你想做Fortran的I/O处理,在Fortran运行时打开;如果你想做C++ I/O,在C++运行时打开文件。我在C++接口中包装了FORTRAN库。我需要单元号以便与该库交互(该库用于解析一些复杂的数据文件)。我尝试这样做,我不需要编写额外的FORTRAN代码。您可以在调用<代码>打开/代码>的情况下创建FORTRAN包装器,它将单元号返回到C++外部。简单的是好的,但这里确实是一个额外的FORTRAN很简单的情况。但是值得注意的是,在Fortran中,
open
本身不是一个函数,
unit=11
不是一个带关键字的参数。在运行时将有底层函数调用,但它远不是可移植的。Fortran没有
OPEN
函数。Fortarn有一个
OPEN
语句。这是两个完全不同的事情。为什么要在C++中打开FORTRAN单元/文件?你不能真正地(明智地)用C++中的单元做任何事情。如果你想做Fortran的I/O处理,在Fortran运行时打开;如果你想做C++ I/O,在C++运行时打开文件。我在C++接口中包装了FORTRAN库。我需要单元号以便与该库交互(该库用于解析一些复杂的数据文件)。我尝试这样做,我不需要编写额外的FORTRAN代码。您可以在调用<代码>打开/代码>的情况下创建FORTRAN包装器,它将单元号返回到C++外部。简单的是好的,但这里确实是一个额外的FORTRAN很简单的情况。但是值得注意的是,在Fortran中,
open
本身不是一个函数,
unit=11
不是一个带关键字的参数。在运行时将有底层函数调用,但它远不是可移植的。Fortran没有
OPEN
函数。Fortarn有一个
OPEN
语句。这是两件完全不同的事情。