c/c++语言开发共享C可变函数与Fortran的互操作性

有没有办法声明一个C variadic函数并从Fortran调用它? 我需要调用此函数来计算用字符串标记的向量之间的一些点积。 我的想法是声明类似下面的内容,其中变量参数列表包含字符串文字。 如果变量参数列表为空,那么我将在标准标签之间进行查找并执行计算。 如果用户指定了两个标签,我会检索这两个向量并得到它们的点积:

extern "C" void compute_dot_product(double * dot_product, ...) { va_list args; va_start(args, NULL); char * label1 = va_arg(args, char *); if (!label1) { // Do standard label lookup and compute dot product } else { // Compute dot product between the vectors with the specified labels char * label2 = va_arg(args, char *); } va_end(args); } 

唯一的问题是我可以编译我的C库并将其链接到Fortran可执行文件,但是当我尝试访问变量参数列表时出现运行时错误。 知道我想做什么是可能的吗? 一个可能的解决方案是分成两个函数:一个执行标准标签查找(0参数情况),另一个执行非标准标签查找(2参数情况)。 我宁愿避免这个解决方案。

    无法以标准符合(即便携式)方式调用可变参数函数。

    您可以使C函数的定义仅采用两个参数(因此它不再是可变参数 – 对函数的现有引用将需要修改),C函数中的第二个参数是一个指针,或者为NULL以指示那里没有额外的东西被传递,或指向一个指针数组(可能是NULL终止)或任何其他东西。 在F201X中,这种函数的接口体可能能够使用第二个参数的OPTIONAL属性。

      以上就是c/c++开发分享C可变函数与Fortran的互操作性相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/545558.html

      (0)
      上一篇 2021年1月10日
      下一篇 2021年1月10日

      精彩推荐