精华内容
下载资源
问答
  • 微擎上传图片(原形函数

    千次阅读 2018-01-20 14:00:57
    在微擎中使用自带的图片上传组件,有时在移动端需要单图上传,或者剪裁功能等等,需要原形函数,本文简要说明,详细参见微擎文档。 1、html代码 2、js代码 //上传图片 -- 原形 util.image($('.js-...

    在微擎中使用自带的图片上传组件,有时在移动端需要单图上传,或者剪裁功能等等,需要原形函数,本文简要说明,详细参见微擎文档。

    1、html代码

    <div class="mui-table-view-chevron">
      <div class="mui-image-uploader">
        <a href="javascript:;" class="mui-upload-btn mui-pull-right js-image-{$name}"></a>
        <div class="mui-image-preview js-image-preview mui-pull-right"></div>
      </div>
    </div>


    2、js代码

    //上传图片 -- 原形
    util.image($('.js-image-{$name}'), function(url){
      $('.js-image-{$name}').parent().find('.js-image-preview').append('<input type="hidden" value="'+url.attachment+'" name="{$name}" /><img src="'+url.url+'" data-id="'+url.id+'" data-preview-src="" data-preview-group="__IMG_UPLOAD_{$name}" />');
      if($('.js-image-{$name}').parent().find('img').length == 1){
        util.toast('上传成功');
      }else{
        util.toast('上传失败');
      }
      }, {
         crop : false,//是否剪裁
         multiple : false,//是否多图上传 ---剪裁则此项必须为false
         preview : '__IMG_UPLOAD_{$name}'
      });

    3、有些移动端上传图片不能删除,附删除图片源码

    //删除图片
    $(document).on("click", ".mui-clearfix .js-submit", function (a) {
       var b = $(document).find(".mui-slider-group .mui-active").index();
       $(".mui-image-preview input").eq(b).remove();
       $(".mui-image-preview img").eq(b).remove();
       var i = mui.previewImage({footer: util.templates["image.preview.html"]});
       i.close();
    });
    
    4、说明

     因为图片要用传输到后台,所以在后台中(php)添加 $name = '';  跟微擎组件添加name值相同
     本例亲测可行,另有删除图片可选择
            该案例为移动端使用
     如有更好的方法,欢迎提出^_^





    展开全文
  • printf函数原型

    千次阅读 2017-09-15 14:44:59
    typedef char *va_list;#define _AUPBND (sizeof (acpi_native_int) - 1) #define _ADNBND (sizeof (acpi_native_int) - 1)#define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) #define va_
    
    
    typedef char *va_list;
    
    #define   _AUPBND        (sizeof (acpi_native_int) - 1)
    #define   _ADNBND        (sizeof (acpi_native_int) - 1)
    
    #define _bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd)))
    #define va_arg(ap, T) (*(T *)(((ap) += (_bnd (T, _AUPBND))) - (_bnd (T,_ADNBND))))
    #define va_end(ap)    (void) 0
    #define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_bnd (A,_AUPBND))))
    
    //start.c
    static char sprint_buf[1024];
    int printf(char *fmt, ...)
    {
    va_list args;
    int n;
    va_start(args, fmt);
    n = vsprintf(sprint_buf, fmt, args);
    va_end(args);
    write(stdout, sprint_buf, n);
    return n;
    }
    
    
    
    
    
    int vsprintf(char *buf, const char *fmt, va_list args)
    {
      int len;
      unsigned long num;
      int i, base;
      char *str;
      char *s;
    
      int flags;            // Flags to number()
    
      int field_width;    // Width of output field
      int precision;    // Min. # of digits for integers; max number of chars for from string
      int qualifier;    // 'h', 'l', or 'L' for integer fields
    
      for (str = buf; *fmt; fmt++)
      {
        if (*fmt != '%')
        {
          *str++ = *fmt;
          continue;
        }
    
        // Process flags
        flags = 0;
    repeat:
        fmt++; // This also skips first '%'
        switch (*fmt)
        {
          case '-': flags |= LEFT; goto repeat;
          case '+': flags |= PLUS; goto repeat;
          case ' ': flags |= SPACE; goto repeat;
          case '#': flags |= SPECIAL; goto repeat;
          case '0': flags |= ZEROPAD; goto repeat;
        }
    
        // Get field width
        field_width = -1;
        if (is_digit(*fmt))
          field_width = skip_atoi(&fmt);
        else if (*fmt == '*')
        {
          fmt++;
          field_width = va_arg(args, int);
          if (field_width < 0)
          {
        field_width = -field_width;
        flags |= LEFT;
          }
        }
    
        // Get the precision
        precision = -1;
        if (*fmt == '.')
        {
          ++fmt;   
          if (is_digit(*fmt))
            precision = skip_atoi(&fmt);
          else if (*fmt == '*')
          {
            ++fmt;
            precision = va_arg(args, int);
          }
          if (precision < 0) precision = 0;
        }
    
        // Get the conversion qualifier
        qualifier = -1;
        if (*fmt == 'h' || *fmt == 'l' || *fmt == 'L')
        {
          qualifier = *fmt;
          fmt++;
        }
    
        // Default base
        base = 10;
    
        switch (*fmt)
        {
          case 'c':
        if (!(flags & LEFT)) while (--field_width > 0) *str++ = ' ';
        *str++ = (unsigned char) va_arg(args, int);
        while (--field_width > 0) *str++ = ' ';
        continue;
    
          case 's':
        s = va_arg(args, char *);
        if (!s)    s = "<NULL>";
        len = strnlen(s, precision);
        if (!(flags & LEFT)) while (len < field_width--) *str++ = ' ';
        for (i = 0; i < len; ++i) *str++ = *s++;
        while (len < field_width--) *str++ = ' ';
        continue;
    
          case 'p':
        if (field_width == -1)
        {
          field_width = 2 * sizeof(void *);
          flags |= ZEROPAD;
        }
        str = number(str, (unsigned long) va_arg(args, void *), 16, field_width, precision, flags);
        continue;
    
          case 'n':
        if (qualifier == 'l')
        {
          long *ip = va_arg(args, long *);
          *ip = (str - buf);
        }
        else
        {
          int *ip = va_arg(args, int *);
          *ip = (str - buf);
        }
        continue;
    
          case 'A':
        flags |= LARGE;
    
          case 'a':
        if (qualifier == 'l')
          str = eaddr(str, va_arg(args, unsigned char *), field_width, precision, flags);
        else
          str = iaddr(str, va_arg(args, unsigned char *), field_width, precision, flags);
        continue;
    
          // Integer number formats - set up the flags and "break"
          case 'o':
        base = 8;
        break;
    
          case 'X':
        flags |= LARGE;
    
          case 'x':
        base = 16;
        break;
    
          case 'd':
          case 'i':
        flags |= SIGN;
    
          case 'u':
        break;
    
          case 'E':
          case 'G':
          case 'e':
          case 'f':
          case 'g':
            str = flt(str, va_arg(args, double), field_width, precision, *fmt, flags | SIGN);
        continue;
    
          default:
        if (*fmt != '%') *str++ = '%';
        if (*fmt)
          *str++ = *fmt;
        else
          --fmt;
        continue;
        }
    
        if (qualifier == 'l')
          num = va_arg(args, unsigned long);
        else if (qualifier == 'h')
        {
          if (flags & SIGN)
        num = va_arg(args, short);
          else
        num = va_arg(args, unsigned short);
        }
        else if (flags & SIGN)
          num = va_arg(args, int);
        else
          num = va_arg(args, unsigned int);
    
        str = number(str, num, base, field_width, precision, flags);
      }
    
      *str = '/0';
      return str - buf;
    }
    
    展开全文
  • 在Object的构造函数的原型对象中的属性和方法都可以被Object构造函数的实例所继承。Object原型中的所具有的任何属性和方法也同样存在于其他对象中,任何对象继承自Object。 Object 是所有构造函数的父构造函数,...

    在Object的构造函数的原型对象中的属性和方法都可以被Object构造函数的实例所继承。Object原型中的所具有的任何属性和方法也同样存在于其他对象中,任何对象继承自Object。

    Object 是所有构造函数的父构造函数,所有的构造函数都直接间接的继承Object。
    所有的实例对象都可以调用其构造函数及其父构造函数的原型中的方法
    Object.prototype.toString()
    Object.prototype.valueOf() ...

    1.

    obj的构造函数是Object,所以obj可以调用Object.prototype的方法
    

    var obj ={} ;//var obj = new Object(); obj.toString();

     2.

     3.

    arr的构造函数是Array,Array继承Object,因此,arr可以调用Array.prototype及Object.prototype
    中的方法
    

     var arr = new Array(3);

    arr.toString();

    var obj = { name:'tom', age:13}

    obj.toString() // [Object Object]

    JSON.stringify(obj) // {''name'' :''tom'',''age'':13}

     总结:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,实例都包含一个指向原型对象的内部指针。 ----《JavaScript高级程序设计》

    展开全文
  • c语言函数指针指向的函数的参数与定义该指针的原型参数个数不一致最近研究了一下appweb,是c代码,在代码中发现一个问题:函数指针指向的函数与定义该函数指针的原型的参数个数不一致typedefvoid(*MprEventProc)...

    c语言函数指针指向的函数的参数与定义该指针的原型参数个数不一致

    最近研究了一下appweb,是c代码,在代码中发现一个问题:函数指针指向的函数与定义该函数指针的原型的参数个数不一致

    typedef void (*MprEventProc)(void *data, struct MprEvent *event);//函数指针原型typedef struct MprWaitHandler {

    int             desiredMask;        /**

    int             presentMask;        /**

    int             fd;                 /**sock) */

    int             notifierIndex;      /**

    int             flags;              /**

    void            *handlerData;       /**

    MprEvent        *event;             /**

    MprWaitService  *service;           /**

    MprDispatcher   *dispatcher;        /**

    MprEventProc    proc;               /**

    struct MprWorker *requiredWorker;   /**

    struct MprThread *thread;           /**

    MprCond         *callbackComplete;  /**

    } MprWaitHandler;MprWaitHandler      *wp;

    (wp->proc)(wp->handlerData, NULL);//函数指针调用的地方//函数指针赋值的地方

    wp->proc = acceptConn;//acceptConn 的函数原型

    static void acceptConn(HttpEndpoint *endpoint)

    {

    MprDispatcher   *dispatcher;

    MprEvent        *event;

    MprSocket       *sock;

    MprWaitHandler  *wp;

    SK_ERROR(("ME_EVENT_NOTIFIER:%d   acceptConn[0x%x] endpoint[0x%x]",ME_EVENT_NOTIFIER, acceptConn,endpoint));

    if ((sock = mprAcceptSocket(endpoint->sock)) == 0) {

    return;

    }

    wp = endpoint->sock->handler;

    if (wp->flags & MPR_WAIT_NEW_DISPATCHER) {

    dispatcher = mprCreateDispatcher("IO", MPR_DISPATCHER_AUTO);

    } else if (wp->dispatcher) {

    dispatcher = wp->dispatcher;

    } else {

    dispatcher = mprGetDispatcher();

    }

    event = mprCreateEvent(dispatcher, "AcceptConn", 0, httpAcceptConn, endpoint, MPR_EVENT_DONT_QUEUE);

    event->mask = wp->presentMask;

    event->sock = sock;

    event->handler = wp;

    /*

    Optimization to wake the event service in this amount of time. This ensures that when the HttpTimer is scheduled,

    it won't need to awaken the notifier.

    */

    mprSetEventServiceSleep(HTTP_TIMER_PERIOD);

    mprQueueEvent(dispatcher, event);

    }

    我的问题是 acceptConn 函数只有一个参数,而 wp->proc 函数指针的原型却有两个参数,参数个数不一致,为什么编译不报错,而且调用也不会产生任何问题?

    ------解决思路----------------------

    “堆栈平衡”

    “调用约定”

    “参数默认值”

    "C和CPP编译的不同"

    必有一款适合你!

    194839106.gif

    ------解决思路----------------------

    C里面是允许的,C++不允许

    展开全文
  • Python原来这么简单(win系统 提高篇)
  • C++中的sort()函数原形

    千次阅读 2018-07-16 09:59:33
    1、sor(a,a+n,compare){ //前两个是参数是待排序的数组首地址和尾地址//最后一个参数是compare表示的比较类型//可调用functional函数的less()和greater()函数比较大小}...
  • Python原来这么简单(win系统 提高篇)
  • 1、函数的工作:1、提供函数的定义。2、提供函数的原型。3、调用函数。 2、库函数的分类: (1)库函数:已经定义和编译好的函数,可以使用标准库头文件提供其原型,只需正确地调用这种函数即可。 (2)自定义函数:...
  • 本文实例讲述了Java使用自定义注解实现函数测试功能。分享给大家供大家参考,具体如下:一 自定义注解使用@interface定义Annotation使用Annotation修饰程序中的类、方法、变量、接口等定义,通常我们会把Annotation...
  • 函数与原型链

    2021-11-12 19:14:17
    ​ 在JavaScript中,我们创建一个函数A( 就是声明一个函数 ), 那么浏览器就会在内存中创建一个对象B,而且每个函数都默认会有一个属性 prototype 指向了这个对象( 即: prototype的属性的值是这个对象 )。这个对象B...
  • random函数

    2021-04-21 22:53:09
    手机评站网今天精心准备的是《random函数》,下面是详解!random函数的用法是turbopascal中的函数,希望有具体的介绍(有程序最好)...是turbo pascal 中的函数,希望有具体的介绍(有程序最好)用法:1、随机生成(0,1)...
  •   上一节中,我们学习了有关数组和字符串的常用方法。...使用函数,将一段代码包装成一个块,使用它时只需要提供对应的参数,就可以方便地调用它并获取它的返回值。下面,就让我们一起来了解一下C语言中函数的.
  • 使用原型,编译器可以验证您正在正确地调用函数(使用正确的参数编号和类型)。没有原型,就有可能拥有以下内容://file1.cvoiddoit(doubled){....}intsum(inta,intb,intc){returna+b+c;}这是://file2.c//InC,...
  • C语言函数的声明以及函数原型

    千次阅读 2019-07-02 20:45:58
    C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错。但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明。 所谓声明(Declaration),就是告诉编译器我要使用这个...
  • Python函数基础

    千次阅读 2021-03-04 10:25:57
    Python提供了许多内建函数,也可以自己创建函数,这被叫做用户自定义函数函数分类:内置函数、自定义函数不使用函数的问题:组织结构不清晰、代码冗余、无法统一管理且维护难度大二、定义函数函数代码块以def关键词...
  • Python 递归函数

    万次阅读 多人点赞 2017-06-03 10:27:01
    生活如此,编程世界亦如此 - 没有生活原形或者现象,何来程序创作的源头和灵感?正因此,Python 中出现了这样一种函数 - 递归函数。 大多数情况下,我们见到的是一个函数调用其他函数。除此之外, 函数还可以自我...
  • 在一些大型开源软件中,通常会有函数指针的应用,函数指针可以让程序在运行过程中,动态的的去调用对应的回调函数。 linux内核代码中,也有大量的函数指针应用。 例子: linux中支持大量的文件系统,如ramfs,ext...
  • 箭头函数的使用和一些特性 JS中的箭头函数用=>来标识。箭头函数有两个主要的优点: 更简短的函数; 更直观的作用域和this的绑定(不绑定this) 因为这些优点,箭头函数比起其他形式的函数声明更受欢迎。比如,受...
  • C语言函数调用方式分享在C语言中函数的调用非常实用,如何调用函数成为常见的问题。大家知道C语言函数调用方式吗?通常在使用VC进行函数定义时会指定该函数调用方式,诸如:int __stdcall max(int a, int b){return a...
  • C语言-gets函数

    万次阅读 多人点赞 2020-03-20 20:43:37
    gets函数 gets函数原型:char *gets(char *str) 功能:从stdio流中读取字符串直到遇到换行符或者EOF时停止,并将读取的结果存放在str指针所指字符数组中换行符不作为读取内容 ,读取的换行符被转换为NULL值 并由此...
  • 在使用VC进行函数定义时,通常会指定该函数调用方式,那么在C语言中函数调用方式有什么区别呢?下面小编找到了一下教程,分享给大家,希望可以帮助到大家。通常在使用VC进行函数定义时会指定该函数调用方式,诸如:...
  • main的返回值main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出。返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。void main()有一些书上的,都使用了void main( ) ,其实...
  • 但这不是真正的随机数,当计算机正常开机后,这个种子的值是定了的,除非你破坏了系统,为了改变这个种子的值,C提供了srand()函数,它的原形是void srand( int a)。 可能大家都知道C语言中的随机函数random,可是...
  • 函数原形 void * memset(void*s, int ch,size_t n) 二。函数作用 将以s内存地址为首的连续n个字节的内容置成ch,一般用来对大量结构体和数组进行清零 三。常见错误 1.搞反了 ch 和 n的位置 对char[20]清零...
  • Java函数式编程

    2021-02-12 10:18:23
    函数式编程从JDK1.8开始为了简化使用者进行代码的开发,专门提供有lambda表达式的支持,利用此操作形式可以实现函数式的编程,对于函数编程比较著名的语言是:haskell、Scala,利用函数式的编程可以避免掉面向对象...
  • 函数的形参列表

    千次阅读 2020-09-07 12:12:29
    函数在定义的时候,可以定义“形参列表”,用于接收参数!形参列表就是定义一系列的参数,可以是变量或函数指针。形参变量用于接收函数调用的时候,传递过来的数据。 这里我们先讲解形参是变量的知识,后续再讲解...
  • main的返回值main函数的返回值用于说明程序的退出状态。如果返回0,则代表程序正常退出。返回其它数字的含义则由系统决定。通常,返回非零代表程序异常退出。void main()有一些书上的,都使用了void main( ) ,其实...
  • OPENGL常见函数介绍

    千次阅读 2017-10-02 21:07:03
    1.OpenGL核心库 ...据类型的参数,因此派生出来的函数原形多达300多个。  核心库中的函数主要可以分为以下几类函数:  (1)绘制基本几何图元的函数。如绘制图元的函数glBegain()、glEnd()、glNo

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,246
精华内容 7,698
关键字:

原形函数