精华内容
下载资源
问答
  • C++ 初始化函数

    2019-03-16 08:01:00
    初始化函数:OnInitDialog() 在这个位置添加初始化代码 转载于:https://www.cnblogs.com/liming19680104/p/10540554.html

    初始化函数:OnInitDialog()

        在这个位置添加初始化代码

     

    转载于:https://www.cnblogs.com/liming19680104/p/10540554.html

    展开全文
  • python-初始化函数

    2018-12-03 22:25:00
    #本次学习:初始化函数 #-*- coding:utf-8 -*- class SeniorTestingEngineer: #初始化函数,在创建对象的时候就设置初始值。例如我们在SeniorTestingEngineer类里添加一个初始化函数,要求用户在实例化...
    #本次学习:初始化函数
    #-*- coding:utf-8 -*-
    
    class SeniorTestingEngineer:
    
        #初始化函数,在创建对象的时候就设置初始值。例如我们在SeniorTestingEngineer类里添加一个初始化函数,要求用户在实例化对象的时候提供name和work_year,salary参数。
        def __init__(self,name,work_year,salary):
            self.work_year=work_year
            self.salary=salary
            self.name=name
    
        #self对象方法
        def coding(self,language,rows):#对象方法
            print('{0}代码一级棒,一天写{1}行代码'.format(language,rows))
            print('{0}同学的工作年限是{1},月薪是{2}'.format(self.name,self.work_year,self.salary))#用对象来调用属性值
    
        @staticmethod#静态方法
        def do_mysql(name):
            print('数据库一级棒')
    
        @classmethod#类方法
        def do_linux(cls):#传一个类名进来
            print('linux一级棒')
            print('工作年限是{0},月薪是{1}'.format(cls.work_year,cls.salary))#类方法必须用类名来调用属性值
    
        def do_auto_testing(self):
            print('自动化测试一级棒')
    
    
    p1=SeniorTestingEngineer('YAYA',2,20000)
    p1.coding('java',300)
     
     

     

    
    

    转载于:https://www.cnblogs.com/Aphrodite/p/10061416.html

    展开全文
  • STM32初始化函数的另外一种写法

    千次阅读 2020-02-11 16:51:33
    利用编译器的特性,在程序编译时将各模块初始化函数顺序存放到内存的指定地址,然后在程序运行时main函数从这块内存区域中,依次调用各模块的初始化函数,自动完成各个模块的初始化工作,同时增强了程序的高内聚低...

    设计思想

    利用编译器的特性,在程序编译时将各模块初始化函数顺序存放到内存的指定地址,然后在程序运行时main函数从这块内存区域中,依次调用各模块的初始化函数,自动完成各个模块的初始化工作,同时增强了程序的高内聚低耦合特性,提高了软件的质量。

     

    试验环境

    • 工具链:Keil5

    • 开发板:STM32F103ZE


     

    修改链接脚本

    修改链接脚本的目的是:在STM32的内存中,留出一块合适的大小(大小根据自己的需求调整),用来存放各个模块的初始化函数

    1.1 内存分配

    在Keil中新建一个工程,编译后在工程目录下的Objects文件夹中会自动生成一个以.sct结尾的链接脚本,其内容如下:

    
    ; *************************************************************
    
    ; *** Scatter-Loading Description File generated by uVision ***
    
    ; *************************************************************
    
    
    
    LR_IROM1 0x08000000 0x00080000 { ; load region size_region
    
    ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
    
    *.o (RESET, +First)
    
    *(InRoot$$Sections)
    
    .ANY (+RO)
    
    .ANY (+XO)
    
    }
    
    
    
    ; 此区域(RW_IRAM1)使用所有的内存64Kb
    
    RW_IRAM1 0x20000000 0x00010000 { ; RW data
    
    .ANY (+RW +ZI)
    
    }
    
    }

    我们将其修改:RWIRAM1为48K,RWIRAM2为16K,其中RW_IRAM2用来顺序存放各模块的初始化函数。

    ; *************************************************************
    
    ; *** Scatter-Loading Description File generated by uVision ***
    
    ; *************************************************************
    
    
    
    LR_IROM1 0x08000000 0x00080000 { ; load region size_region
    
    ER_IROM1 0x08000000 0x00080000 { ; load address = execution address
    
    *.o (RESET, +First)
    
    *(InRoot$$Sections)
    
    .ANY (+RO)
    
    .ANY (+XO)
    
    }
    
    
    
    ;RW_IRAM1为48K,供应用程序使用
    
    RW_IRAM1 0x20000000 0x0000c000 { ; RW data
    
    .ANY (+RW +ZI)
    
    }
    
    
    
    ;RW_IRAM2为16K,用于存放各个模块的初始化函数
    
    RW_IRAM2 0x2000c000 0x00004000 { ; RW data
    
    *.o(RAMCODE)
    
    }
    
    }

    友情提示:keil中链接脚本的修改方法如下图所示

    1.2 将指定的函数存放到指定的内存区域

    上面我们对STM32的内存进行了分配,16K大小的RW_IRAM2内存区域将用作存储初始化函数,那么怎么才能将指定的函数放进这个区域呢?

    实现方法如下:

    // 初始化函数的原型,函数原型可根据实际需求调整
    
    typedef void (*init_function_list)(uint8_t taskID);
    
    
    
    // 通过MODULE_INIT(func),func函数在编译时将会被链接到RAMCODE内存区,既我们为初始化函数预先分配的内存区域
    
    #define _init __attribute__((used, section("RAMCODE")))
    
    #define MODULE_INIT(func) init_function_list _fn_##func _init = func

    将所有的初始化函数都写进特定内存区域后,我们只需知道这个区域的起止地址,就可以统一遍历调用所有的初始化函数,从而实现对各个模块的初始化。

    模块的初始化有顺序要求怎么办?有时一个模块的正常使用必须在某个模块初始化之后,比如一个模块需要打印Log,那么Log模块必须在它之前被初始化。怎么解决呢?其实很简单,统一调用初始化函数时,我们是根据内存地址顺序调用的,那么将Log模块的初始化函数放在其前面就可以了。

    在Keil中可以这么做:

    1.3 使用举例

    Talk is cheap. Show me the code.

    完整示例工程源码点击下载:https://github.com/FanHongchuang/module_init

    • module1.c,module2.c,module3.c 为3个独立的模块,其初始化函数都为内部函数(使用static修饰),符合高内聚低耦合的软件设计思想

    • main.c中,do_init函数直接通过初始化函数的内存地址,对初始化函数逐个进行调用

    简单示例代码如下:

    module1.c

    static void module1_init(uint8_t taskID)
    
    {
    
    // write your code ...
    
    }
    
    
    
    MODULE_INIT(module1_init);

    module2.c

    static void module3_init(uint8_t taskID)
    
    {
    
    // write your code ...
    
    }
    
    
    
    MODULE_INIT(module3_init);

    main.c

    void do_init(void)
    
    {
    
    uint8_t taskID = 0;
    
    init_function_list *call = (init_function_list *)&Image$$RW_IRAM2$$Base;
    
    init_function_list *end = (init_function_list *)&Image$$RW_IRAM2$$Limit;
    
    do
    
    {
    
    (*call)(taskID++);
    
    call++;
    
    }while(call < end);
    
    }
    
    
    
    
    
    int main()
    
    {
    
    // init all module in the function
    
    do_init();
    
    
    
    // write your code ...
    
    
    
    while(1)
    
    {
    
    // write your code ...
    
    }
     
    展开全文
  • 有人说在声明的时候初始化相当于在构造函数初始化,其实不是的,成员变量初始化的顺序为:先进行声明时初始化,然后进行初始化列表初始化,最后进行构造函数初始化,如下代码:(另外初始化列表中初始化的顺序是和...

    c++成员变量初始化方法:声明时初始化、初始化列表、构造函数初始化

    有人说在声明的时候初始化相当于在构造函数中初始化,其实不是的,成员变量初始化的顺序为:先进行声明时初始化,然后进行初始化列表初始化,最后进行构造函数初始化,如下代码:(另外初始化列表中初始化的顺序是和变量声明的顺序一样,而与列表中的顺序无关)

    1 #include "stdafx.h"
     2 #include <iostream>
     3 using namespace std;
     4 class A 
     5 {
     6 public:
     7     int a = 1;
     8     A() {}
     9     A(int a_):a(a_){}
    10     A(int a_, bool b) :a(4) { a = a_; }
    11 };
    12 
    13 int main()
    14 {
    15     A a1, a2(3), a3(5, true);
    16     cout << "a1.a=" << a1.a << endl;
    17     cout << "a2.a=" << a2.a << endl;
    18     cout << "a3.a=" << a3.a << endl;
    19     system("pause");
    20     return 0;
    21 }
    

    结果如图,可看出,初始化列表初始化的变量值会覆盖掉声明时初始化的值,而构造函数中初始化的值又会覆盖掉初始化列表的,足以看出初始化的顺序:

    在这里插入图片描述

    另外有人说这种初始化方式破坏了类的抽象性。是的,一定程度上,但是却能带来很大便捷。好比一台机器能够生产某种零件,零件的各个尺寸可以在一定程度任意改变,但是我们并不是每次生产这种零件都需要一个一个地给定每一个参数,然后再生产,机器会自己带有一套“默认”的零件尺寸参数,这样新手可以直接用默认参数生产,除非你知道每一个参数都是干啥的,否则没必要更改。那么也可以在构造函数中给出这一套“默认参数”啊,是的,但是假如你有10个构造函数,那么你每一个都要复制一次所有成员变量的默认参数吗?显然在做重复的无用工作,那么为什么不直接在声明的时候就初始化!


    参考:https://www.cnblogs.com/blog-vincent-0x1F7/p/9668524.html

    展开全文
  • UCOS-II任务堆栈初始化函数移植

    千次阅读 2013-08-03 18:41:53
    http://blog.sina.com.cn/s/blog_6d589a300100nc3n.html### (2010-10-20 16:34:40) 转载▼ 标签: 杂谈 分类:UCOSII ...堆栈初始化函数原型是: OS_STK *OSTaskStkInit (vo
  • Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究 - BlackStorm - 博客园 https://www.cnblogs.com/BlackStorm/p/5699965.html Java的初始化块、静态初始化块、构造函数的执行顺序及用途探究  ...
  • 问:对话框初始化函数是哪个? 如果做基于对话框的,会有一个初始化函数OnInitDialog
  • 2. nn.init 中各种初始化函数 3. He 初始化 torch.init https://pytorch.org/docs/stable/nn.html#torch-nn-init 1. 均匀分布 torch.nn.init.uniform_(tensor, a=0, b=1) 服从~U(a,b)U(a, b)U(a,b) 2. 正太分布 tor....
  • java初始化构造函数调用顺序

    千次阅读 2015-03-06 09:51:19
    初始化时构造函数调用顺序:  (1)初始化对象的存储空间为零或null值;  (2)调用父类构造函数;  (3)按顺序分别调用类成员变量和实例成员变量的初始化表达式;  (4)调用本身构造函数。 例子: ...
  • 关于类的构造函数,可以分为两个部分,初始化部分(初始化列表)和计算部分(花括号间的赋值运算),在花括号作用域间进行的运算不是初始化,而是赋值。     对于必须在定义时初始化的情况在类构造函数中也是...
  • struct的初始化及其构造函数

    千次阅读 2018-08-01 12:22:43
    今天看数据结构时,突然看到一个用构造函数进行初始化的struct结构体,这个比较新鲜,因为以前从来没有看到过,于是想了想struct到底有没有构造函数以及struct如何初始化,上网查了一些资料,供大家参考!...
  • JAVA学习笔记之构造函数初始化

    千次阅读 2016-08-29 17:32:08
    构造函数的功能:用来初始化对象的成员变量的方法。 一般初始化的都是实例变量。很少情况下给静态变量初始化 构造函数是不写返回值的。 创建对象是调用构造函数将对象的成员变量给初始化啦。 定义构造函数的要义: ...
  • 初始化IvParameterSpec函数错误 一、API 1. 继承关系 【1】java.lang.Object 【2】javax.crypto.spec.IvParameterSpec 2. 主要方法 【1】构造方法:IvParameterSpec(byte[ ] iv) 返回初始化向量 iv...
  • 文章第一段通过sigmoid激活函数讲述了为何初始化? 简答的说就是: 如果初始化值很小,那么随着层数的传递,方差就会趋于0,此时输入值 也变得越来越小,在sigmoid上就是在0附近,接近于线性,失去了非线性...
  • C++派生类对象构造函数初始化顺序

    千次阅读 2014-03-22 21:21:16
    答:(1)先调用基类中的构造函数(如果有多个基类,根据继承时声明的顺序进行初始化) (2)再调用成员类中的构造函数(如果有多个成员类,根据其声明的顺序进行初始化) (3)最后初始化派生类本身的构造函数 #...
  • 参考:http://www.360doc.com/content/13/0607/19/1317564_291331713.shtml C++ Primer中在讲构造函数初始化...不同之处在于,使用构造函数初始化列表的版本初始化数据成员,没有定义初始化列表的构造函数
  • 很多的人对中构造函数初始化很多的困惑,对冒号后初始化不是太明白,总搞不清楚它们之间的区别,我想把我对这个问题的理解和看法和大家讨论讨论。  在程序中定义变量并初始化的机制中,有两种形式,一个是我们传统...
  • * 对象继承—次构造函数初始化 */ open class DemoPersonConstruction1{ var name: String = "" var age: Int = 0 var height: Int = 0 var likeFood: String = "" va...
  • 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如: class CExample { public:  int a;  float b;  //构造函数初始化列表
  • 版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/90580582 ...这里的属性初始化器,指的是,handleClick在类中是一个属性,这个属性指的是一...
  • 构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如: class CExample { public:  int a;  float b;  //构造函数初始化列表 ...
  • netsh interface ipv4提示错误“在 IPMONTR.DLL 中初始化函数 INITHELPERDLL 启动失败,错误代码为 10107” 解决办法: 系统中tcp/ip协议出问题了,具体原因可能是Winsock2损坏了。 修复Winsock2:命令行运行...
  • 360安全卫士LSP修复工具修复Winsock LSP:恢复Winsock LSP到初始状态,或进入360安装目录,找到WinSockLSP.reg和WinSockLSPIFSL.reg两个文件双击执行。 运行cmd.exe,在命名提示符下执行:  1 netsh ...
  • ...当我在窗体初始化的时候,调用了一个外部的dill时,它就不知什么原因的...不要尝试在 DllMain 或映像初始化函数内运行托管代码”的异常,程序就卡掉了,在网上查了查,相关说明如下: .NET2.0中增加了42种非常
  • 1.构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。例如: Example::Example() : ival(0), dval(0.0) {} //ival 和dval是类的两个数据成员...
  • 通过构造函数初始化,可以在创建该类对象时动态赋值,更加灵活。 2.代码执行顺序 在类被创建时,成员变量按照声明顺序初始化,然后调用类的构造方法。  执行顺序: 执行父类静态代码执行子类静态代码 初始化...
  • ◆由于构造函数不能被继承,因此,派生类的构造函数中除了对派生类中数据成员进行初始化外,还必须通过调用直接基类的构造函数来对基类中数据成员初 始化,一般地将,对派生类中数据成员初始化放在该派生类构造函数...
  • C++类构造函数初始化列表执行顺序

    千次阅读 2016-08-05 12:24:57
    C++类构造函数初始化列表执行顺序
  • C++构造函数初始化列表与赋值

    千次阅读 2015-04-21 14:20:22
    C++类中成员变量的初始化有两种方式: ... 构造函数初始化列表和构造函数体内赋值。下面看看两种方式有何不同。  成员变量初始化的顺序是按照在那种定义的顺序。 1 内部数据类型(char,int……指针等)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 845,616
精华内容 338,246
关键字:

com初始化函数