精华内容
下载资源
问答
  • 本帖最后由 hpp19860 于 2017-5-23 11:10 ...发现外部函数 testfun() 在状态图的位置不一样会导致产生的代码差别很大。file:///D:\Program Files (x86)\QQ\QQmsg\52747630\Image\C2C\7VI6XP9H6}L5MKU}P6`MR%P.png t...

    本帖最后由 hpp19860 于 2017-5-23 11:10 编辑

    各位大神好,我刚开始入手代码生成。发现外部函数 testfun() 在状态图的位置不一样会导致产生的代码差别很大。file:///D:\Program Files (x86)\QQ\QQmsg\52747630\Image\C2C\7VI6XP9H6}L5MKU}P6`MR%P.png                     testfun() 函数为外部c 函数,问了几个大神大门告诉我产生这个的原因是流程调用和状态调用的差别,我想问下流程调用和状态调用是什                      么意思,多谢!

    调用方式一:在状态入口处调用testfun函数生成代码中会多如下部分(见图1)

    生成的代码会对模型中的 i  值进行一系列的判断

    if (mytest_DW.i < 2.147483648E+9) {                                                         if (mytest_DW.i >= -2.147483648E+9) {

    tmp = (int32_T)mytest_DW.i;

    } else {

    tmp = MIN_int32_T;

    }

    } else {

    tmp = MAX_int32_T;

    }

    调用方式二:在状态默认迁移处调用testfun函数生成代码中会多如下部分(见图2)

    此方式中自动生成的代码没有对模型中的 i 值进行任何判断,而是直接拿来用

    if (mytest_DW.is_active_c3_mytest == 0U) {

    mytest_DW.is_active_c3_mytest = 1U;

    mytest_DW.is_c3_mytest = mytest_IN_myfor;

    testFun(mytest_B.FromWorkspace[1]);

    for (i = 0; i < 6; i++) {

    if (!((mytest_B.FromWorkspace[i + 1] > 8.0) || (mytest_B.FromWorkspace[i +1] < 4.0))) {

    mytest_DW.yow += mytest_B.FromWorkspace[i + 1];

    } else {

    }

    模型见附件:其中  b=2:1:10;

    file:///D:\Program Files (x86)\QQ\QQmsg\52747630\Image\C2C\7VI6XP9H6}L5MKU}P6`MR%P.png

    file:///D:\Program Files (x86)\QQ\QQmsg\52747630\Image\C2C\7VI6XP9H6}L5MKU}P6`MR%P.png

    1.png

    (11.76 KB, 下载次数: 0)

    2017-5-23 10:50 上传

    442a53943febe9465fc072b4fbe10813.gif

    b2a5a3e0dcc7d508e00275fe42fce1b5.gif

    方式一:testfun 函数在状态如入口处调用

    88405b49a08916f58900e1e167125f47.png

    2.png

    (11.83 KB, 下载次数: 0)

    2017-5-23 10:51 上传

    442a53943febe9465fc072b4fbe10813.gif

    b2a5a3e0dcc7d508e00275fe42fce1b5.gif

    方式二:testfun函数在默认迁移处调用

    4ea88c5e926dea7ef42e339fa1ab8c84.png

    99e39a8196ca8f63dc1eee7b0d72d0ed.gif

    2017-5-23 11:02 上传

    点击文件名下载附件

    318.62 KB, 下载次数: 4

    b=2:1:10;

    展开全文
  • zeroFill (num,len,radix) {let str = num.toString(radix || 10);while (str.length < len) {str = '0' + str;}return str;},initMap() {console.log(this.zeroFill(50, 8, 16))//底图图层数据源var ...

    zeroFill (num,len,radix) {

    let str = num.toString(radix || 10);

    while (str.length < len) {

    str = '0' + str;

    }

    return str;

    },

    initMap() {

    console.log(this.zeroFill(50, 8, 16))

    //底图图层数据源

    var googleDXSource = new XYZ({

    tileUrlFunction: function (coor) {

    console.log(coor)

    console.log(this.zeroFill(coor[1], 8, 16))

    /*var x = 'C' + zeroFill(coor[1], 8, 16);

    var y = 'R' + this.zeroFill(-coor[2] - 1, 8, 16);

    var z = 'L' + this.zeroFill(coor[0], 2, 10);

    return this.weixinMap + '/' + z + '/' + y + '/' + x + '.jpg';*/

    },

    projection: 'EPSG:3857',

    wrapX: false,

    logo: false

    });

    }

    展开全文
  • Q1:python函数里的数组如何在函数外调用出来使用返回值的方法有两种:可以直接把调用函数作为变量使用可以用调用函数给一个变量赋值第一种情况见如下例子:l = [1,2,3,4,5]def add_element(list, element):list....

    Q1:python函数里的数组如何在函数外调用出来

    使用返回值的方法有两种:

    可以直接把调用的函数作为变量使用

    可以用调用函数给一个变量赋值

    第一种情况见如下例子:

    l = [1,2,3,4,5]

    def add_element(list, element):

    list.append(element)

    return list

    printadd_element(l, 6)

    # >>>[1,2,3,4,5,6]

    printadd_element(l, 6)[5]

    # >>> 6

    第二种情况:

    l1 =add_element(l, 6)

    print l1

    # >>>[1,2,3,4,5,6]

    print l1[5]

    # >>> 6

    注意: 以上例子都是应用于python 2.x

    Q2:Python自定义函数如何调用?

    Python自定义函数如何调用这个问题,我的看法是需要明白什么是函数,什么是参数这两个问题。什么是函数,函数是组织好的,可以复用的用于解决同一类问题的代码段

    函数是我们根据需要、对事物的了解,组织成某一个代码段,供其它类似的场景中调用。函数提高了应用的模块性、代码的重复复用-复用性。python中有许多内建的函数,比如:str(),print()等是函数,我们也可以自己定义创建函数,被称作自定义函数。python中通过def这个关键字来声名定义一个函数。什么是函数的参数,函数的参数给函数提供了更高的灵活性

    函数的参数是我们事先定义的一个变量,变量的好处在于值是不固定的,可以在调用函数的时候根据需要使用特定的值。除了正常定义的必选参数外,还可以使用默认参数,可变参数和关键字参数。函数调用示例

    无参数函数调用,直接调用就可以得到结果,不需要输入其它值

    有参数的函数调用,需要根据需要输入相应的参数,得到相应的结果函数的调用,就是需要我们事先想清楚相应的逻辑,然后组织一段代码,供后续的业务调用使用,在调用的时候只需要使用对应的函数名称和参数就可以使用(在有参的情况下,输入相应的参数值)。

    Q3:python中怎么在一个函数内调用另外一个函数,类

    123456789101112defa(x):y=x*xreturnydefb(x):y=a(x)returnyy1=a(2)y2=b(3)#这样就可以了试一下

    Q4:python中如何定义函数

    用def关键字,括号里是参数列表

    def add(a, b):

    return a+b

    #下面调用

    print add(1, 2)

    Q5:python 在一个类中函数调用可以在函数定义之前吗

    两种位置都试一下呗,编程需要有探索的劲儿,不然文档手册都看不下去的话,很难提高

    Q6:Python函数定义和调用时都加*,有什么作用?

    函数定义时,*和**都代表的可变参数,*代表的是元组或列表,**代表的是字典,至于函数调用时,*代表将这个元组或列表的元素拆开,依次传递给函数的每个参数,这些具体的例子你可以在网上查一下,相关书籍也有具体介绍的,在实际编程中也会经常遇到,可以解决许多意想不到的问题。

    Q7:Python如何调用自定义类中的函数?

    定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。

    如下实例调用了printme()函数:

    复制代码 代码如下:#!/usr/bin/python

    # Function definition is here

    def printme( str ):

    "打印任何传入的字符串"

    print str;

    return;

    # Now you can call printme function

    printme("我要调用用户自定义函数!");

    printme("再次调用同一函数");

    #以上实例输出结果:

    #我要调用用户自定义函数!

    #再次调用同一函数

    展开全文
  • [root@dynamic]# gcc -m32 -Wl,-dynamic-list=./exported.txt -o main main.c -ldl [root#dynamic] ./main func_in_lib is called func_in_main b = 2 以上两种方法,即可即决,动态库调用外部函数处理方式。...

    1,基本使用动态库示例

    #include <stdio.h>
    
    int func_in_lib(int k)
    {
        printf("func_in_lib is called \n");
        return k + 1;
    }
    
    
    

     [clear#] gcc -fPIC --shared -o lib.so lib.c

     如上的lib.so库,可直接引用动态库即可。

    使用系统方法条用动态库:

    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <dlfcn.h>
    
    typedef int (*pfunc)(int);
    
    void func_in_main(void)
    {
        printf("func_in_main \n");
    }
    
    int main(int argc, char *agv[])
    {
        int a = 1;
        int b;
    
        // 打开动态库
        void *handle = dlopen("./lib.so", RTLD_NOW);
        if (handle)
        {
            // 查找动态库中的函数
            pfunc func = (pfunc) dlsym(handle, "func_in_lib");
            if (func)
            {
                b = func(a);
                printf("b = %d \n", b);
            }
            else
            {
                printf("dlsym failed! \n");
            }
            dlclose(handle);
        }
        else
        {
            printf("dlopen failed! \n");
        }
        
        return 0;
    }

      [root]# ./main 
      func_in_lib is called 
      b = 2  

      如上调用没有任何问题,一切正常。

      如果需要再动态库中调用外部的函数,需要注意的几点,总结如下,如下例子:

      

    #include <stdio.h>
    // 外部函数声明
    void func_in_main(void);
    
    int func_in_lib(int k)
    {
        printf("func_in_lib is called \n");
        func_in_main();
        return k + 1;
    }
    
    如上示例,在库中声明一个函数,并调用,外部函数实现外部。

      此刻之前的main并没有做任何修改,直接运行main程序,结果如下:

       [root@#] ./main

       dlopen failed!

      运行打开库失败了。

       原因:动态库引用了外部函数,仅仅只是在库中进行了声明,但是使用者并未制定外部函数的实现,没有指定对应函数地址,动态库执行中因找不到导致报错。

       解决方法:需要将外部函数的符号倒进去,并且main在自身内提供一个func_in_main方法的实现,编译时需要将该方法的符号地址倒入。如下几个案列:

    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <dlfcn.h>
    
    typedef int (*pfunc)(int);
    
    void func_in_main(void)
    {
        printf("func_in_main \n");
    }
    
    int main(int argc, char *agv[])
    {
        int a = 1;
        int b;
    
        // 打开动态库
        void *handle = dlopen("./lib.so", RTLD_NOW);
        if (handle)
        {
            // 查找动态库中的函数
            pfunc func = (pfunc) dlsym(handle, "func_in_lib");
            if (func)
            {
                b = func(a);
                printf("b = %d \n", b);
            }
            else
            {
                printf("dlsym failed! \n");
            }
            dlclose(handle);
        }
        else
        {
            printf("dlopen failed! \n");
        }
        
        return 0;
    }
    

    [root@erichlliu /data/myC++/dynamic]#  gcc -m32 -fPIC --shared -o lib.so lib.c 
    [root@erichlliu /data/myC++/dynamic]# gcc -g -o main main.c -ldl

     [root@dynamic]# ./main 
     dlopen failed! 

     如上虽然提供了外部函数的实现,编译程序时因没有将外部函数的符号地址倒入,执行时动态库仍旧找不到,所以就撂挑子不干啦。

    查看导出的符号表
    [root@/data/myC++/dynamic]# $ objdump -e main -T | grep func_in_main
    [root@/data/myC++/dynamic]# # 这里输出为空

    因为如上仅仅是在可执行程序添加了外部函数,func_in_main函数符号并没倒出来。

    修改如上编译:

    <1>修改外部符号导出-所有符号:

    [root#dynamic]gcc -m32 -rdynamic -o main main.c -ldl

    [root#dynamic] ./main

    func_in_lib is called 
    func_in_main 
    b = 2 

    <2>将指定符号罗列出来,

    export.txt罗列需要倒出的方法符号:

    {
        extern "C"
        {
            func_in_main;
        };
    };

    [root@dynamic]# gcc -m32 -Wl,-dynamic-list=./exported.txt -o main main.c -ldl

    [root#dynamic] ./main

    func_in_lib is called 
    func_in_main 
    b = 2 

    以上两种方法,即可即决,动态库调用外部函数处理方式。

    2.变更修改方式:

     a.在动态库中可以将自己需要被执行的函数注册到动态库中,可以设置默认值。如下:

      lib.c

    #include <stdio.h>
    
    // 默认实现
    void func_in_main_def(void)
    {
        printf("the main is lazy, do NOT register me! \n");
    }
    
    // 定义外部函数指针
    void (*func_in_main)() = func_in_main_def;
    
    void register_func(void (*pf)())
    {
        func_in_main = pf;
    }
    
    int func_in_lib(int k)
    {
        printf("func_in_lib is called \n");
    
        if (func_in_main)
            func_in_main();
    
        return k + 1;
    }
    

      main.c

      

    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <dlfcn.h>
    
    typedef int (*pfunc)(int);
    typedef int (*pregister)(void (*)());
    
    // 控制注册函数的宏定义
    #define REG_FUNC
    
    #ifdef REG_FUNC
    void func_in_main(void)
    {
        printf("func_in_main \n");
    }
    #endif
    
    int main(int argc, char *agv[])
    {
        int a = 1;
        int b;
    
        // 打开动态库
        void *handle = dlopen("./lib.so", RTLD_NOW);
        if (handle)
        {
    #ifdef REG_FUNC
            // 查找动态库中的注册函数
            pregister register_func = (pregister) dlsym(handle, "register_func");
            if (register_func)
            {
    
                register_func(func_in_main);
            }
    #endif
    
            // 查找动态库中的函数
            pfunc func = (pfunc) dlsym(handle, "func_in_lib");
            if (func)
            {
                b = func(a);
                printf("b = %d \n", b);
            }
            else
            {
                printf("dlsym failed! \n");
            }
            dlclose(handle);
        }
        else
        {
            printf("dlopen failed! \n");
        }
        
        return 0;
    }
    

     如上使用dlopen调用,执行如下结果:

    [root@/data/myC++/dynamic]# gcc -m32 -o main main.c -ldl
    [root@/data/myC++/dynamic]# ./main 
    func_in_lib is called 
    the main is lazy, do NOT register me! 
    b = 2 

    如上提示:the main is lazy, do NOT register me! ,因为没有主动注册,可以忽略,如果不想出现提示,就注册一个函数即可。

    #include <unistd.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <dlfcn.h>
    
    typedef int (*pfunc)(int);
    typedef int (*pregister)(void (*)());
    
    // 控制注册函数的宏定义
    #define REG_FUNC
    
    #ifdef REG_FUNC
    void func_in_main(void)
    {
        printf("func_in_main \n");
    }
    #endif
    
    int main(int argc, char *agv[])
    {
        int a = 1;
        int b;
    
        // 打开动态库
        void *handle = dlopen("./lib.so", RTLD_NOW);
        if (handle)
        {
    #ifdef REG_FUNC
            // 查找动态库中的注册函数
            pregister register_func = (pregister) dlsym(handle, "register_func");
            if (register_func)
            {
    
                register_func(func_in_main);
            }
    #endif
    
            // 查找动态库中的函数
            pfunc func = (pfunc) dlsym(handle, "func_in_lib");
            if (func)
            {
                b = func(a);
                printf("b = %d \n", b);
            }
            else
            {
                printf("dlsym failed! \n");
            }
            dlclose(handle);
        }
        else
        {
            printf("dlopen failed! \n");
        }
        
        return 0;
    }

     

     

    展开全文
  • 首先给事件函数一个名字,就是具名函数: <input type="button" value="点击"/> <script> var djs=document.querySelector('input'); djs.onclick=f1; function f1(){ //运行代码 fun(); ...
  • interrupt the program with Ctrl-C server.serve_forever() data=[] def ParentClassCall(currentdata): data.append(currentdata) 我的问题是如何从SocketReciever类中调用ParentClassCall函数?你知道吗 我知道这...
  • 我在php文件和onUploadComplete中使用以下jquery / ajax代码我想调用位于外部js文件中的函数totalprice()(js文件已经加载)。现在控制台抛出错误:Uncaught ReferenceError:未定义totalprice在这种情况下如何定义...
  • 外部函数调用类方法

    2021-03-21 22:58:14
    class Student: # 定义学生类 def __init__(self,name): self.name = name def get_name(self): ...def func(obj): # 外部函数 obj.set_name("吴老师") # 调用了实例的set_name方法#通过传参修
  • PHP提供了三个专用函数 system()、exec()、passthru() 来调用外部的命令,它们之间的区别是:system(): 执行外部命令,输出并返回最后一行shell结果。exec(): 执行外部命令,不输出结果,返回最后一行shell结果,...
  • 如果你正在调用一个模块(实际上,同一个文件之外的任何函数都可以被当作一个模块来处理,我讨厌指定太精确的东西),你需要确定一些东西。下面是一个模块的例子,我们称它为my_module.py# Example python ...
  • B.py调用A.py的函数或类在同一个文件夹下调用函数:A.py文件:def add(x,y):print('和为:%d'%(x+y))B.py文件:import AA.add(1,2)或from A import addadd(1,2)调用类:A.py文件:class A:def __init__(self,xx,yy):...
  • 2、类型选择为HDevelop函数文件,目录自己选择一下,名称自拟 3、参数箭头靠上的是输入,箭头靠下的是输出,编译好主函数之后...或者先定义好参数,点击确定,然后去自定义的目录去打开外部函数,再编写语句。 ...
  • 要求 ...通过调用外部函数的方法调用delay()函数,通过访问全局变量的方式访问leddata[]数组。keil工程中的两个源文件会通过编译程序分别编译生成两个目标文件(.obj),目标文件和库文件(.lib)再通
  • }// end begin() 我遇到的问题是在内部函数内声明的变量不会传递给外部函数。我已经声明了变量全局变量并将其返回。不知道发生了什么事。 但有趣的是,如果我回声calcTime($ database_name,$ currentTime); $ ...
  • C语言函数调用汇编语言函数.pdf维普资讯第 1卷 第 1期 石河子大学学报 (自然科学版) VoI_1 No 11997年 3月 JournalofShihe~University(NaturalScience) M ar. 199760C语言函数调用汇编语言函数一彭 军 弋...
  • 文章目录JS函数调用一个函数JS在外部调用函数内部的函数 JS函数调用一个函数 代码示例 要点:在一个函数调用另外一个函数!!!!(常用)(分开写两个function 函数, 然后再一个函数内进行调用!) <!...
  • 示例foo.h#ifndefFOO_DOT_H/*Thisisan"includeguard"*/#defineFOO_DOT_H/*preventsthefilefrombeingincludedtwice.*//*Includingaheaderfiletwicecausesallkinds*//*ofinteresting...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼第一次用多个函数、、#includevoid SCANF(int i;int a[10]);void PRINTF(int i;int a[10])main(){SCANF();PRINTF()}void SCANF(){ int i;int a[10];for(i=0;i<10;i++)...
  • 我在外部文件’Marq_Msg.js’中有我的JavaScript代码,如下所示:var Messages = new Array();Messages[0] = "This is message 1";Messages[1] = "This is message 2";Messages[2] = "This is...
  • MATLAB gui函数调用问题

    2021-04-23 11:28:18
    当运行完标红的这个函数调用后,总是出错,上面的这段程序显报错: 错误使用 matlab.ui.control.UIControl/get 对象无效或已删除。 出错 danjixianxwjc>chuli_Callback (line 87) if get(handles.zltf,'Value')==1 ...
  • #endif 这样就可以用#include来包含调用这个C文件中的函数了哦!呵呵!for example: #include "serial.h" #include "reg52.h" #define uchar unsigned char #define uint unsigned int #define InBufferLong 20 ...
  • LAP 8.108.10 内部函数和外部函数内部函数和外部函数 函数本质上是全局的,因为一个函数要被另外的函数调用,但是,也可以指定函数 不能被其他文件调用 根据函数能否被其他源文件调用,将函数区分为内部函数和外部函数。...
  • 该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 如题,程序如下: #include #include //malloc,calloc,free,realloc头文件 #define LEN sizeof(struct Student) ... } 函数调用,涉及到动态链表就不用声明了么??
  • c语言 如何在main中调用函数

    千次阅读 2021-05-21 13:32:50
    #include int main(){char f...//定义两个用于储存输入数值的函数printf("输入计算表达式,各项之间使用空格分开:\n");scanf("%f%c%f\n",&i,&f,&y);if(f = '+'){d = jia(i,y);}printf("%f\n",d);}float...
  • 今天遇到个问题,以为是汇编中调用C函数的原因,其实不是这个原因,在这里也温习一下在ARM汇编调用C函数的方式。若在汇编中调用C文件中的函数 void fun_c(void),只需要在调用之前,IMPORT fun_c ,其中 keil工具是不...
  • namespace Halcon外部函数的引擎调用 { public partial class Form1 : Form { private HDevEngine MyEngine = new HDevEngine(); //private HDevOpMultiWindowImpl MyHDevOperatorImpl; HDevOpFixedWindowImpl ...
  • 函数调用和声明

    2020-12-22 08:39:58
      在函数调用过程中,我们将函数值传递进函数体中的时候,实际在函数体内形成了一份新的内存空间用来存储我们传递进去的值,因此形参在函数体内无论再怎么改变都不会影响调用函数时使用的实参。 #define _CRT_...
  • count调用函数find,以查看从给定索引开始的单词中可以找到多少次字母(请参阅下面的“代码”).令人困惑的部分:通过使用函数“count”,我得到以下程序输出:可以看出,一些输出是重复的(标记为红色).如果不从发现中...
  • 目的:我想通过自定义指令实现表单验证我的代码逻辑是下面这样的template:methods中处理数据交互:methods: {submit: function () {// 跟后台通信...// 返回结果// 我想在这里直接调用指令validate中的fn.message方法}...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 652,134
精华内容 260,853
关键字:

怎么调用外部函数