首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Fortran过程指针获取函数名?

使用Fortran过程指针获取函数名的方法如下:

  1. 首先,定义一个过程指针,并将其关联到目标函数。例如,假设目标函数名为"target_func",其参数和返回值为real类型,可以使用以下代码进行定义和关联:
  2. 首先,定义一个过程指针,并将其关联到目标函数。例如,假设目标函数名为"target_func",其参数和返回值为real类型,可以使用以下代码进行定义和关联:
  3. 在代码中,可以通过获取过程指针的名称来获得目标函数的名称。Fortran并没有提供直接获取过程指针名称的内建函数或操作符。但是,可以通过编写一个自定义子程序来实现这一功能。以下是一个示例子程序:
  4. 在代码中,可以通过获取过程指针的名称来获得目标函数的名称。Fortran并没有提供直接获取过程指针名称的内建函数或操作符。但是,可以通过编写一个自定义子程序来实现这一功能。以下是一个示例子程序:
  5. 在上述代码中,我们假设目标函数名为"target_func",并将其硬编码在子程序中。
  6. 在需要获取函数名的地方,调用上述子程序,并传递过程指针作为参数。该子程序将返回目标函数的名称。
  7. 在需要获取函数名的地方,调用上述子程序,并传递过程指针作为参数。该子程序将返回目标函数的名称。
  8. 在上述代码中,我们声明了一个字符串变量"function_name"来存储函数名,然后调用子程序"get_proc_name"来获取目标函数的名称。

需要注意的是,上述方法中的目标函数名是硬编码的,需要根据实际情况进行修改。另外,此方法仅适用于获取过程指针所关联的函数名,而不适用于获取其他函数的名称。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用 Kotlin 的函数式编程 替代 GOF 设计模式用 Kotlin 的函数式编程 替代 GOF 设计模式函数式编程(FP)《Kotlin极简教程》正式上架:

"函数式编程", 又称泛函编程, 是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。它的基础是 λ 演算(lambda calculus)。...第一个 FORTRAN (FORmula TRANslating 的缩写)编译器 1957.4 正式发行。FORTRAN 程序的代码行数比汇编少20倍。...简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。而我们在OOP中的那么多的设计模式,其实就是在OOP的多态性的约束规则下,对这些函数指针的调用模式的总结。...而实际上,编程的本质就是次化分解与复合的过程。通过这样的过程,创造一个美妙的逻辑之塔世界。 我们经常说一些代码片段是优雅的或美观的,实际上意味着它们更容易被人类有限的思维所处理。...举例来说,下面代码中的print变量就是一个函数(没有函数名),可以作为另一个函数的参数: >>> val print = fun(x:Any){println(x)} >>> listOf(1,2,3

1.2K50

一篇搞定fortran超详细学习教程 fortran语法讲解

如何学习: 学习Fortran中条件语句和循环语句的语法和使用方法。 掌握如何在Fortran程序中编写条件判断和循环结构。...Fortran提供了指针的声明、赋值、解引用等操作。通过指针,Fortran程序可以在运行时动态地分配和释放内存。 如何学习: 学习Fortran中指针的声明和使用方法。...掌握如何在Fortran程序中实现动态内存管理。 编写包含指针操作的Fortran程序,进行内存管理和数据引用操作。...如何学习: 学习Fortran中面向对象编程的基本概念和使用方法。 掌握如何在Fortran程序中实现泛型编程和类型参数化。...编译是将Fortran源代码转换为可执行程序的过程;调试是检查和修复Fortran程序中的错误的过程;优化则是提高Fortran程序运行性能的过程。

37610
  • 厉害了!Ziglang首次落地高性能计算场景

    OpenMP 标准[5]规定了 C、C++ 和 Fortran 程序员如何使用该技术,其中编译器指令在 C 和 C++ 中表示为预编译指令(pragma),而在 Fortran 中则表示为特殊注释。...示例 7 展示了如何通过此方法在 Zig 中获取线程 ID: const omp = @import("std").omp; const thread_id = omp.get_thread_num()...; 示例 7:使用 OpenMP 库封装器在 Zig 中获取线程 ID。...因此,在这样的移植过程中,所有数组索引和循环下界都需要调整,这增加了复杂性。 尽管以前从未这样做过,但从 Zig 调用 Fortran 过程的过程类似于调用 C 函数,所有参数类型都更改为指针。...此外,为了符合 LLVM 的名称修饰方案,必须在函数名的末尾添加一个下划线。同样,也可以从 Fortran 调用 Zig 函数,但必须再次注意名称修饰方案。

    50310

    C语言-------指针进阶(2)

    指针数组,数组里面的元素都是int*的指针类型; 2.数组指针 数组指针是什么,如何使用,我们回忆一下二维数组传参,我们知道一维数组的传参,例test函数 test(arr)参数arr是数组名,就是数组首个元素的地址...3.函数指针变量 我们知道数组名表示 数组首个元素的地址,函数名同样表示函数的地址,取地址数组名表示整个 数组的地址,但是取地址函数名仍然是函数的地址,和直接的函数名没有区别 图片里面int (*p)(...,参数int类型,返回void类型,signal是一个函数,函 数的参数是int类型,和函数指针类型,去掉后是void(*)(int)还是一个函数指针类型,也就是这个函 数的返回值是函数指针类型,函数的声明只需要高数参数的类型...6,函数指针数组 (1)首先讲一下函数指针数组如何使用: 每一个运算的法则都是函数指针,因为他们的参数,返回类型都是相同的,所以我们可以放到 一个数组里面,这个数组就叫做函数指针数组,循环里面直接调用就可以了...; 函数指针数组就是在函数指针名字后面加上元素个数; (2)接下来讲一下函数指针数组如何使用:以一个计算机的构建为例,这个计算机可以实现 简单的四则运算;下面是自定义函数和主函数的代码 下面的是函数 int

    5500

    如何在Fortran中调用Python

    my_plugin用于获取ffi对象。def_extern装饰器用于处理C类型,指针等。.../test hello world 以上演示了如何使用CFFI从Fortran中调用Python程序,而不需要写任何C程序。 FAQ 必须将所有Python代码写入header字符串吗 不需要这样。...CFFI的ffi对象转换指针ptr为给定形状的numpy数组。...结论 上面描述了如何传递Fortran数据给Python函数,然后再获取计算输出。为了解决频繁更改接口的问题,我们将fortran数据放到了Python模块的字典中。...通过调用给定的名称来获取数据,并且将计算结果也存储到相同的字段中,然后,Fortran代码通过索引字典中正确的关键词来获取结果。Cython中使用了类似的架构,但CFFI更为方便。

    6K40

    【C++进阶】多态的理解

    虚函数与静态成员函数 静态成员函数没有this指针,使用类型::成员函数的调用方式无法访问虚函数表,所以静态成员函数无法放进虚函数表,即静态成员函数不能设置成虚函数。...结论 析构函数建议设置成虚函数,因为有时可能利用多态方式通过基类指针调用子类析构函        数,尤其是父类的析构函数强力建议设置为虚函数,这样动态释放父类指针所指的子类      对象时,能够达到析构的多态...重载,重定义(隐藏)与重写 重载:在同一作用域,函数名相同,返回值可以不同,参数列表必须不同; 重定义(隐藏):在不同的作用域,一个在基类,一个在派生类,只要函数名相同就构成重定义; 重写:1.在不同的作用域...打印虚表 因为虚表指针一般存在对象的前4个字节(64位则为前8个字节),我们可以通过强制类型转换拿到这个虚表指针。...b.如果派生类重写了基类中某个虚函数,用派生类自己的虚函数覆盖虚表中基类的虚函                       数;                   c.派生类自己新增加的虚函数按其在派生类中的声明次序增加到派生类虚表的最后

    12210

    【C++入门篇】保姆级教程篇【中】

    面向机器的语言被广泛称之为“低级语言”,是为了解决面向机器的语言存在的问题,巨佬们又创建了面向过程的语言,也被称为“高级语言”,面向过程的语言不在关注机器本身的一些操作,转而关注如何一步步解决具体的问题的过程...与面向机器语言相比,面向过程的语言就是质的飞跃了,减轻了程序员的大量负担,提升程序员的工作效率促进软件行业的快速发展,这阶段发展的语言COBOL、FORTRAN、C语言等语言。...2)this指针的特性 通过前面的例子我们可以总结出this指针的一些特性: 1、this指针只能在 类内 的 非静态函数 中存在与使用。...答:编译器在生成程序时加入了获取对象首地址的相关代码。编译器有并把获取的首地址存放在了 寄存器 中。成员函数的其它参数都是存放在栈中。而this指针参数则是存放在寄存器中。...析构函数的特点: 1、函数名与类名相同,并且需要再函数名前加上‘~’符号表示析构。 2、没参数没返回值。 3、没有重载。

    8010

    fortran中的数组

    注意,Fortran的字符集不包括中括号[],因此与c语言的风格不同,Fortran对数组分量的操作全都是使用小括号()的。...获取动态数组需要的尺寸 allocate(a(len)) ! 为动态数组分配内存 !...指针 Fortran实际上还有指针pointer,与c语言的指针相比感觉非常鸡肋:1. 我们没有用Fortran建立链表之类的动态需求,动态数组完全够用。2....语法比c语言更繁琐而且更弱,需要target形容的变量才能被指针指向,也没有*p这种运算。3. 各种Fortran编译器对于指针的实现可能有差异或麻烦,我们倾向于完全避免使用指针。...Fortran的指针pointer需要配套target使用,target表明变量可以被指针指向,pointer表明这个变量是指针。

    59410

    【C++】类与对象【定义、访问限定符、this指针】

    今日更新了类与对象的定义、访问限定符、this指针的内容 欢迎大家关注点赞收藏⭐️留言 面向过程和面向对象初步认识 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题...类声明放在.h文件中,成员函数定义放在.cpp文件中,注意:成员函数名前需要加类名:: 一般情况下,我们建议采用第二种形式。 成员变量命名规则的建议: 如上图,这样命名会出现区分不了的问题。...类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。...this指针 对于上述类,有这样的一个问题: Date类中有 Init 与 Print 两个成员函数,函数体中没有关于不同对象的区分,那当d1调用 Init 函 数时,该函数是如何知道应该设置d1对象?...只能在“成员函数”的内部使用 this指针本质上是“成员函数”的形参,当对象调用成员函数时,将对象地址作为实参传递给 this形参。所以对象中不存储this指针。

    16310

    Chatgpt问答之WRF-并行计算

    4、C语言中的指针与fortran语言中的指针有什么区别? • 内存模型不同:C语言的内存模型是连续的字节地址空间,而Fortran语言则支持非连续的内存分配。...• 指针的声明方式不同:在C语言中,指针的声明使用*,如int *p,而在Fortran中,指针的声明使用pointer关键字,如real, pointer :: p。...而在Fortran中,指针不能被直接解引用,必须使用关键字target和associate来实现类似的功能。...也即C语言指针存储的是变量的地址(输出指针结果为地址),fortran语言中指针可视为变量的别名(输出指针结果为变量值)。若想输出地址则需要使用loc()函数。...而在Fortran中,指针的生命周期可以跨越多个子程序,因为它们可以被作为实参传递,并且可以被保存在堆栈或堆上的内存中。因此,在使用Fortran指针时需要更加注意内存管理的问题。

    67730

    函数模板 ## 函数模板

    ,可使用模板。...这个过程称为重载解析(overloading resolution)。过程:创建候选函数列表。其中包含与被调⽤函数的名称相同的函数和模板函数。使⽤候选函数列表创建可⾏函数列表。...完全匹配和最佳匹配 Type(argument-list)意味着⽤作实参的函数名与⽤作形 参的函数指针只要返回类型和参数列表相同,就是匹配的。 !...- 指向⾮const数据的指针和引⽤优先与⾮const指针和引⽤参数匹配。 - const和⾮const之 间的区别只适⽤于指针和引⽤指向的数据。...- ⼀个完全匹配优于另⼀个的另⼀种情况是,其中⼀个是⾮模板函 数,⽽另⼀个不是。在这种情况下,⾮模板函数将优先于模板函数(包 括显式具体化)。

    2.2K10

    c和fortran混编

    一个简单的解决办法——使用g77链接main.o和foo.o。...还有些程序会使用动态链接库.so,那么应该使用nm的-D选项查看这些动态符号。...objdum的功能比nm更强大) 有很多东西很基础我还罗嗦了很久,让大家见笑了:) 还有一件事,那就是我这里链接采用了gcc -l的方式,更基本的是ld的方式,只要你知道链接哪些库,链接的顺序如何即可...像上面的例子最后的链接的使用g77最好,因为我的例子很简单,而你的有可能很复杂。 还想起来一件事,关于网上使用的例子有__stdcall的,那都是关于win api的。...这是编译器(f77)的一个命名规则,没有为什么,它就是把你在fortran中的函数名字全转换成小写,然后在最后加一个下划线。我昨天搜了很多版本,头昏脑胀,怎么调都说找不到,也没有想到要自己看看。

    1.6K41

    RTOS函数命名规则

    驼峰命名法,正如它的名称所表示的那样,指的是混合使用大小写字母来构成标识符的名字。其中第一个单词首字母小写,余下的单词首字母大写。...事实上,很多程序设计者在实际命名时会将驼峰命名法和帕斯卡结合使用,例如变量名采用驼峰命名法,而函数采用帕斯卡命名法。...e :枚举变量 p :指针变量 类似(uint16_t *)变量前缀为pus。...prv :static函数 v: void函数 函数名 函数名包含了函数返回值的类型、函数所在的文件名和函数的功能,如果是私有的函 数则会加一个 prv(private)的前缀。...中定义; xQueueReceive():前缀x表示返回BaseType_t类型数据,Queue表示该函数在queue.c中定义; pvTimerGetTimerID():前缀pv表示返回void类型指针

    1.9K20

    深入解析【C++多态】:探索面向对象编程中的动态绑定与行为多样性和多态的核心概念与应用实践

    即派⽣类虚函数与基类虚函数的返回值 类型、函数名字、参数完全相同。...多态的原理 多态是如何实现的 从底层的⻆度Func函数中ptr->BuyTicket(),是如何作为ptr指向Person对象调Person::BuyTicket, ptr指向Student对象调⽤Student...⽤派⽣类对应的虚函 数。...虚函数和普通函数⼀样的,编译好后是⼀段指令,都是存在代码段的,只是虚函 数的地址⼜存到了虚表中。 虚函数表存在哪的?...派⽣类中重写的基类的虚函数,派⽣类的虚函数表中对应的虚函数就会被覆盖成派⽣类重写的虚函 数地址。 func1和func2被继承下来了,派生类⾃⼰就不会再⽣成虚函数表指针,所以它们是同一个地址。

    11600

    Go语言核心编程(2)——函数

    多个相邻的同类型的参数可以使用简写模式 不支持默认参数 不支持函数重载 实参与形参 Go 函数实参到形参的传递永远是值拷贝,即使是参数是指针也是值拷贝,传递给形参的是这个指针变量的副本, 二者指向同一地址...函数签名 函数签名也就是函数类型,一个函数的签名就是指函数定义首行去掉函数名、参数名和{ 两个函数类型相同的条件是:拥有相同的形参列表和返回值列表(列表元素的次序、个数和类型都相同),形参名可以不同...匿名函数 匿名函数可以看作函数字面量 , 所有直接使用函 数类型变量的地方都可以由匿名函数代替。医名函数 不定参数 不定参数类型必须一致 多个参数时,不定参数必须是最后一个。

    75820

    移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——11.多态

    如果基类的析构函数为虚函数,此时派生类析构函数只要定义,无论是否加virtual关键字, 都与基类的析构函数构成重写,虽然基类与派生类析构函数名字不同。...另外Func2继承下来后是虚函数,所以放进了虚表,Func3也继承下来了,但是不是虚函 数,所以不会放进虚表。 4....那么我们如何查看d的虚表呢?下面我们使用代码打印 出虚表中的函数。 ...答:不能,因为静态成员函数没有this指针,使用类型::成员函数 的调用方式无法访问虚函数表,所以静态成员函数无法放进虚函数表。 6. 构造函数可以是虚函数吗?...如果是指针 对象或者是引用对象,则调用的普通函数快,因为构成多态,运行时调用虚函数需要到虚函 数表中去查找。 9. 虚函数表是在什么阶段生成的,存在哪的?

    8710

    多态与虚(函数)表

    前言 续接上回(继承),我们了解了继承是如何通过虚基表,来解决派生类和父类有相同的成员变量的情况,但是类和对象中可不只有成员变量,如果成员函数也有同名,更或者如果我们想在访问不同情况(类)但是相同函数名时...就如:我们去买票,根据不同年龄给出不一样的优惠,他们都是游客的类,不同的年龄由游客派生出不同年龄游客的类,但是我们只有一个“卖票”这一个接口,那如何实现呢?...观察下图的蓝色箭头我们看到,p是指向johnson对象时,p->BuyTicket在johson的虚表中找到虚函Student::BuyTicket。 3....那么我们如何查看d的虚表呢?...下面我们使用代码打印 出虚表中的函数 typedef void(*VFPTR) (); void PrintVTable(VFPTR vTable[]) { // 依次取虚表中的虚函数指针打印并调用。

    57920

    C++11 lambda

    functor(5); volatile int y2 = lambda(5); return 0; } 按值捕获lambda的工作方式与标准functor几乎相同:它们都分配存储捕获值的对象,并获取指向该对象的隐藏函数参数...,这表明引用的行为是在内部是使用指针实现的。...总结主要区别: 1、函子和lambda总是传递一个this指针,而普通函数自然不是。这会消耗一个额外的寄存器和8个字节的堆栈空间。 Lambda“构造函数”被内联到创建Lambda的函数中。...对于普通函数而言,函数只是用来表达一个运算的过程,它无法记住运算过程中的一些状态数据。函数就像一个漏斗,数据可以从这个漏洞中流过,发生某些变化,但是这个漏斗什么都不会留下。...这时,函数就需要记住上一次的执行状态数据以备下一次函数执行使用。 函数对象的出现就是用来弥补函数的这个缺陷的。利用函数对象自身的成员变量,函数可以记住在每次执行过程中的状态数据,找回失去的记忆。

    1.1K30
    领券