精华内容
下载资源
问答
  • 内部函数是指一个函数只能被本文件中其他函数调用,在定义内部函数时,在函数名和函数类型的前面加static。 函数首部的一般格式为 static 类型标识符 函数名(形参表) //如 static int Max(int num1,int num2) ...

    C++内部函数

    在C++中,根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。

    内部函数是指一个函数只能被本文件中其他函数所调用,在定义内部函数时,在函数名和函数类型的前面加static。

    函数首部的一般格式为

    static 类型标识符 函数名(形参表)
    //如
    static int Max(int num1,int num2)
    

    内部函数又称静态函数。在C++中使用内部函数,可以使函数只局限于所在文件。如果在不同的文件中有同名的内部函数,互不干扰。

    C++外部函数

    在C++中定义函数时,如果在函数首部的最左端加上关键字extern,则表示此函数是外部函数,可供其他文件调用。

    //如函数开头写
    extern int Max(int num1,int num2)
    

    按照上述定义,函数Max就可以为其他文件调用。如果在定义函数时省略extern,则默认为外部函数。

    经典案例:C++实现调用外部Max函数。

    源码分析:

    第一步:单独创建一个Max.app的文件,编写代码:

    #include<iostream>//头文件 
    using namespace std;//命名空间 
    int Max(int x,int y)//自定义Max函数 
    {
      int temp;//定义中间变量 
      temp=x>y?x:y;//把x y中的较大值赋给temp 
      return temp;//函数返回值为temp 
    }
    

    第二步:在头文件添加Max函数,此文件保存格式为.h:

    #include<iostream>//头文件 
    int Max(int x,int y);
    

    第三步:编写主函数内容:

    #include<iostream>//头文件 
    #include "lx.h"//注意此处 
    using namespace std;//命名空间 
    int main()//主函数 
    {
      extern int Max(int x,int y);//声明外部函数 
      int num1,num2,maxNumber;//定义变量 
      cin>>num1>>num2;//输入两个数 
      maxNumber=max(num1,num2);//把较大的赋值给maxNumber 
      cout<<maxNumber;//输出maxNumber 
      return 0;//函数返回值为0 
    }
    

    编译后的结果:

    44 90
    90
    --------------------------------
    Process exited after 5.853 seconds with return value 0
    请按任意键继续. . .
    

    C++调用外部Max函数

    更多案例可以go公众号:C语言入门到精通

    展开全文
  • Java允许成员类(在其他定义的类),局部类(语句块定义的类)和匿名类(无名称的类): class Outer { Object anonymous = new Object(){}; // this is an anonymous class // anonymous ...

    java构造函数内部调用

    关于Java内部类

    Java允许成员类(在其他类内定义的类),局部类(在语句块内定义的类)和匿名类(无名称的类):



    class Outer {
        Object anonymous = new Object(){}; // this is an anonymous class
     
        // anonymous initialisation block
        {
            // this is a local class
            class Local{}
            Local l = new Local();
        }
     
        Outer() {
            // this is a local named class in a constructor
            class Local{}
            Local l = new Local();
        }
     
        void method() {
            // this is a local named class in a method
            class Local{}
            Local l = new Local();
        }
     
        // this is a member class
        class Inner{}
        Inner i = new Inner();
    }

    Java语言规范将成员,本地和匿名类分类为内部类

    实施“细节”

    Java语言或虚拟机规范没有告诉您的是它们是如何实现的。 其他文章已经对此进行了解释,例如Java编译器如何生成综合方法以允许这些成员类访问私有字段,而JVM不允许这样做。

    内部类的另一个易于实现的实现细节是内部类的构造函数采用了额外的综合参数。 相对众所周知 ,内部类构造函数的第一个综合参数将是其封闭实例,并将其存储在this$X综合字段中。 这对所有三种内部类均有效:成员,本地和匿名。

    但是通常不知道捕获非恒定最终变量的局部类是否要求将所有这些变量作为额外的综合构造函数参数传递(捕获的常数最终变量将被内联并且不会生成额外的综合构造函数参数):

    class Outer {
        void method() {
            final String constant = "foo";
            final String nonConstant = "foo".toUpperCase();
            class Local{
                /* synthetic fields and constructor:
     
                Outer this$0;
                String nonConstant;
     
                Local(Outer this$0, String nonConstant){
                    this.this$0 = this$0;
                    this.nonConstant = nonConstant;
                }
                */
            }
            Local l = new Local();
        }
    }

    好的,但是我为什么要关心呢?

    在大多数情况下,除了您自己的好奇心之外,您根本不在乎。 但是,如果您正在使用内部类进行Java反射,那么您应该了解一些事情,并且由于我没有在网上找到或列出它们,因此我认为重要的是要列出帮助他人了解的事情因为不同的编译器将在Java Reflection API中产生不同的结果。

    问题是,当您使用Java反射为内部类构造函数获取java.lang.reflect.Constructor实例时会发生什么? 特别是,允许​​您访问参数类型(前泛型: getParameterTypes() ),泛型参数类型(后泛型: getGenericParameterTypes() )和注释( getParameterAnnotations() )以及答案的方法会发生什么?是: 这取决于

    假设以下Java类:

    class Outer {
        class Inner {
            Inner(){}
            Inner(String param){}
            Inner(@Deprecated Integer param){}
        }
    }

    这是我们的每个构造函数上这三种反射方法返回的数组的大小,以及它们根据所使用的Java编译器的不同而有所不同:

    外层内部类
    .getDeclaredConstructor()
    外层内部类
    .getDeclaredConstructor(
    String.class)
    外层内部类
    .getDeclaredConstructor(
    Integer.class)
    getParameterTypes()
    。长度
    1个 2 2
    getGenericParameterTypes()
    .length用Eclipse编译
    1个 2 2
    getGenericParameterTypes()
    .length用Javac编译
    0 1个 1个
    getParameterAnnotations()
    。长度
    1个 2 1个

    如您所见,合成参数始终包含在getParameterTypes() ,但仅在使用Eclipse进行编译时才包含在getGenericParameterTypes()

    另一方面, getParameterAnnotations()将始终包含合成参数,除非注释了至少一个构造函数参数。

    通过此信息,您现在了解了这些方法的结果之间的差异,但是到目前为止,我仍然没有找到确定哪个参数是合成参数的方法,因为尽管您可以对this$X合成做出很好的猜测参数,这是每个内部类都需要的,因此您无法知道将捕获为局部类构造函数的综合参数的非常量捕获变量的数量。

    参考: Ceylon Team博客博客中的JCG合作伙伴 Stef Epardaud提供的带有内部类构造函数参数的Java Reflection奇数。

    翻译自: https://www.javacodegeeks.com/2013/05/java-reflection-oddities-with-inner-class-constructor-parameters.html

    java构造函数内部调用

    展开全文
  • 主函数中调用其他文件函数

    千次阅读 2016-05-19 11:44:14
    就是再写个头文件,对调用文件里的函数进行申明。再将头文件写主函数所在的文件里。如下面所示: //文件a.c #include "a.h" int display(int a,int b){ cout return 0; } //文件a.h #include int display(int ,...

    前提为,另一个文件中的函数,不能是静态函数,即不能有static修饰。
    调用方法,在调用前进行声明,然后直接调用即可。

    声明方法:
    1 直接在调用前,写函数声明:
    如调用函数为int func(int a),那么在调用前只需要
    int func(int a);
    这样声明后,即可使用func。

    2 将声明写在头文件中。
    如在名为func.h的头文件中加入
    int func(int a);
    然后在调用的源文件中,引用
    #include "func.h"
    即可调用func。


    就是再写个头文件,对调用文件里的函数进行申明。再将头文件写在主函数所在的文件里。如下面所示:

    //文件a.c
    #include "a.h"
    int display(int a,int b){
    cout<<a+b<<endl;
    return 0;
    }
    //文件a.h
    #include <iostream>
    int display(int ,int );
    //文件main.c
    #include "a.h"
    int main(){
    int a=2,b=3;
    display(a,b);
    return 0;
    }
    简单写几行,使用非本源文件的函数就需要文件包含方式来包含其他文件,注意好头文件别重复
    展开全文
  • 使用RTT做开发时,一个函数c文件内定义了一个线程,想要另外一个函数文件内调用,发现一直报错没有定义,报错如下: D:\RT-ThreadStudio\workspace\art_pi_factory_1\modules\OLE/oled.h:15:13: warning: '...

    项目场景:

    使用ART-Pi基于RT-Thread进行开发


    问题描述:

    在使用RTT做开发时,在一个函数c文件内定义了一个线程,想要在另外一个函数文件内调用,发现一直报错没有定义,报错如下:

    D:\RT-ThreadStudio\workspace\art_pi_factory_1\modules\OLE/oled.h:15:13: warning: 'oled_init' declared 'static' but never defined [-Wunused-function]
     static void oled_init(void);
                 ^
    ../modules/OLE/oled.c:15:13: warning: 'oled_init' defined but not used [-Wunused-function]
     static void oled_init(void)
                 ^
    In file included from ../applications/main.c:18:0:
    D:\RT-ThreadStudio\workspace\art_pi_factory_1\modules\OLE/oled.h:15:13: warning: 'oled_init' used but never defined
     static void oled_init(void);
    

    原因分析:

    报错显示未定义oled_init();但是oled_init()却已经定义,并且引用方式正常,然后仔细分析oled_init的定义方式,如下

    	static void oled_init(void);
    

    然后百度,解决问题,static定义的变量或者函数只能在本地文件调用,不能被其他c文件调用,若想要在其他c文件调用,必须将其定义成全局变量;定义如下

    	void oled_init(void);
    

    编译通过
    在这里插入图片描述


    解决方案:

    删除静态static定义,改为全局定义函数,使之可以在其他c文件内调用!

    展开全文
  • linux下c++中如何主函数中调用其他文件函数? 需要四个文件:a.cpp包含一个被调用的函数,myhead.h预定义这个函数,3.b.cpp主函数,4.Makefile文件。 1.a.cpp #include "myhead.h" #include using namespace...
  • 主要介绍了python 某.py文件中调用其他.py函数的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 函数的嵌套调用函数的高级应用

    千次阅读 2019-03-31 19:28:29
    函数的嵌套调用指的是在调用一个函数的过程中,调用另外一个函数,这种在函数内调用其他函数的方式称为嵌套调用。 function example($price,$tax){ function examples($yuan,$taxs=7.5){ return $yuan*$taxs; ...
  • 一种是传统的,windows下写的 一种是c11标准的,可以跨平台#include "stdafx.h" #include //#include #include using namespace std; class A { public: int global_a; public: void printA(){ cout !" ; }
  • 最近项目中要记录用户日志,使用自定义注解进行aop拦截,发现可以拦截调用类的第一个方法,方法中调用其他方法,则其他方法无法拦截,经过查询,发现是aop自身的动态代理造成的,下面我贴出项目的代码: ...
  • python,一切都是对象,函数也和其他对象一样,可以赋值给其他的名字、传递给其他函数、嵌入到数据结构。 而函数名直接是一个对象的引用。 赋给其他名字 def echo(message): print(message) echo('direct ...
  • 外部函数由extern定义,可以被其他源文件的函数调用。extern可以省略。 这样的分类可以让我们的代码更有可读性和模块化。 file1.c #include int main() { extern double cost(double dis, double time);//...
  • 假设名为A.py的文件需要调用B.py文件的C(x,y)函数 假如同一目录下,则只需 import B if __name__ == "__main__": B.C(x,y) 若只需调用单个函数,也可以 from B import C if __name__ == "__...
  • 函数实质上是一个类似于单独的逻辑单元的JavaScript代码,使用函数可以使代码更为简洁,提供重用性,在JavaScript中,大约有95以上的代码是包含在函数中的,由此可见,函数在JavaScript中地位相当重要。 1、函数...
  • PHP:函数的嵌套调用

    2019-08-25 07:26:49
    函数的嵌套调用:指的是在调用一个函数的过程中,调用另外一个函数,这种在函数内调用其他函数的方式称为嵌套调用。 举例:班主任老师要计算每个学生语文和数学平均分,其实现思路是首先编写一个函数用于计算学生的...
  • ...假设名为A.py的文件需要调用B.py文件的C(x,y)函数   假如同一目录下,则只需 import B if __name__ == "__main__": B.C(x,y)   若只需调用单个函数,也可以 from
  • A.py的文件需要调用B.py文件的test函数 同一目录下: A.py #!/usr/bin/env python # -*- coding: utf-8 -*- def test(): ''' 测试函数 ''' print('测试函数') return B.py import B B....
  • 假设名为A.py的文件需要调用B.py文件的C(x,y)函数 情形1:同一目录下, (1) import B if __name__ == "__main__": B.C(x,y) (2)若只需调用单个函数,也可以 from B import C if __name__ == "__...
  • 假设名为A.py的文件需要调用B.py文件的C(x,y)函数 假如同一目录下,则只需 import B if __name__ == "__main__": B.C(x,y) 若只需调用单个函数,也可以 from B import C if __name__ == "__...
  • 首先定义了一个全局函数Locating,又Locating定义了一个局部函数pageScroll,然后我全局函数调用pageScroll时,报错Uncaught ReferenceError: pageScroll is not defined。 ``` function Locating(locate,...
  • 版本:cocos2d-x 3.11 语言:Lua   今天逛了一遍论坛,看到一些独立游戏制作者制作的游戏,感觉好羡慕。...执行跳转界面的函数中,首先然玩家的信息栏往上移动,移动完毕后调用回调函数。   就在调用
  • 2.LR常用函数以及调用...LR脚本中定义变量和编写自定义函数,需将变量的声明放在脚本其他内容的上方,否则会提示【illegal statement termination】 1.编写简单函数 int sum(int a,int b)//简单的求和函数...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,005
精华内容 2,002
关键字:

在函数内调用其他函数