函数声明

extern关键字详解

允我心安 提交于 2019-11-29 00:18:01
基本理解 extern放在变量或者函数之前,表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。 extern有两个作用 1.当它与"C"一起连用时,如: extern "C" void fun(int a, int b);告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,C++的规则在翻译这个函数名时会把fun这个名字变得面目全非,可能是fun@aBc_int_int#%$也可能是别的(不同编译器不同),因为C++支持函数的重载。(详细转到我另一篇博客:https://www.cnblogs.com/WindSun/p/11334182.html) ​ 2.在头文件中: extern int g_Int; 它的作用就是声明全局变量或函数的作用范围的关键字,其声明的函数和变量可以在本模块或其他模块中使用,记住它是一个声明不是定义。也就是说B模块如果引用A模块中定义的全局变量或函数时,它只要包含A模块的头文件即可,在编译阶段,模块B虽然找不到该函数或变量,但它不会报错,它会在连接时从模块A生成的目标代码中找到此函数。 extern用在变量声明中常常有这样一个作用,在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。 extern的注意事项 (1)extern数组变量

javascript模式 读书笔记一

被刻印的时光 ゝ 提交于 2019-11-28 23:48:24
第一章 简介 模式 模式是指一个通用问题的解决方案。 模式分三种 设计模式 编码模式:javascript特有的 反模式:常见的 引发的问题比解决的问题更多的一种方法。 JavaScript:基本概念 面向对象 只有五种基本类型不是对象:数值类型,字符串类型,布尔类型,空类型和未定义类型。 函数实际上也是对象,函数有属性和方法。 对象主要有两种: 原生的(Native) 原生的对象分为内置对象(数组,日期等) 和用户自定义对象 (var o={}) 主机的(Host) 包含windows对象和所有的DOM对象。 没有类 JavaScript中没有类。 原型(Prototypes) JavaScript没有继承,可以使用多种方法实现继承,通常使用原型。 原型是一个对象,并且创建的每一个都会自动获取一个Prototypes属性,该属性指向一个新的空对象。 该对象几乎等同于采用对象字面量或Object()创建的对象,区别在于它的constructor属性指向了所创建的函数,而不是指向内置的Object()函数。可以为该空对象增加成员变量,以后其他对象也可以从该对象继承并像使用自己的属性一样使用该对象的属性。 原型就是一个对象,每一个函数都有Prototype属性。 ECMAScript 5 核心的JavaScript编程语言(不包含DOM,BOM和额外的主机对象

eslint规则

て烟熏妆下的殇ゞ 提交于 2019-11-28 22:40:05
{ "env": { "browser": true, "node": true, "commonjs": true }, "ecmaFeatures": { // lambda表达式 "arrowFunctions": true, // 解构赋值 "destructuring": true, // class "classes": true, // http://es6.ruanyifeng.com/#docs/function#函数参数的默认值 "defaultParams": true, // 块级作用域,允许使用let const "blockBindings": true, // 允许使用模块,模块内默认严格模式 "modules": true, // 允许字面量定义对象时,用表达式做属性名 // http://es6.ruanyifeng.com/#docs/object#属性名表达式 "objectLiteralComputedProperties": true, // 允许对象字面量方法名简写 /*var o = { method() { return "Hello!"; } }; 等同于 var o = { method: function() { return "Hello!"; } }; */ "objectLiteralShorthandMethods":

ESLint规则

倾然丶 夕夏残阳落幕 提交于 2019-11-28 22:39:46
原文地址: https://blog.csdn.net/helpzp2008/article/details/51507428 "no-alert" : 0 , //禁止使用alert confirm prompt "no-array-constructor" : 2 , //禁止使用数组构造器 "no-bitwise" : 0 , //禁止使用按位运算符 "no-caller" : 1 , //禁止使用arguments.caller或arguments.callee "no-catch-shadow" : 2 , //禁止catch子句参数与外部作用域变量同名 "no-class-assign" : 2 , //禁止给类赋值 "no-cond-assign" : 2 , //禁止在条件表达式中使用赋值语句 "no-console" : 2 , //禁止使用console "no-const-assign" : 2 , //禁止修改const声明的变量 "no-constant-condition" : 2 , //禁止在条件中使用常量表达式 if(true) if(1) "no-continue" : 0 , //禁止使用continue "no-control-regex" : 2 , //禁止在正则表达式中使用控制字符 "no-debugger" : 2 , /

oracle入门学习的一些小总结

守給你的承諾、 提交于 2019-11-28 20:39:02
1. 书写代码时,先把要书写的格式写出来,然后往内部填充内容,能降低代码的报错率。 2. 通过 :=& 这种弹框手动录入数据时,如果输入的是字符串时需要加单引号 3. 不能够通过循环来多次弹框录入数据,Oracle不支持(因为实际应用中不存在这种录入数据的情况)。 4. 注意书写存储过程中,传递的参数不要与数据库表中的列名一样,否则sql语句的执行会与预期的不同,并且很难找出原因 5. 在存储id主键数据时,如果在下面的sql语句中两张表内都用到了同一个id,这时,这个id需要从调用的地方生成并且传递过去,不能在sql执行的时候插入生成。 6. 语句报错时,大都是语法格式问题,查看分号是否少写,是否多写。 7. 一些语法区别要注意:如oracle的分支if有三种,有区别的就是if 条件 then elsif 条件 then else end if; 8.函数和存储过程很相似,但是存储过程主要用来书写业务逻辑,只为一个业务服务,里面写的时增删改查; 函数一般书写工具,在select中可以使用。 PL/SQL语法: A. 匿名代码块: declare 声明:数据类型、变量、常量(constant)、异常——⾃定义异常、游标 begin 代码块:核⼼代码基本都是sql语句。 exception 异常处理 end; B. 赋值:在declare中 直接赋值 变量名:=值; 输入框赋值

嵌入式开发常遇的问题收集汇总(持续更新)

ぃ、小莉子 提交于 2019-11-28 20:10:37
STM32部分: 1、 问题: 在调试公司项目的时候,将使用 DMA2 的 5 通道采集 adc3 的子工程代码移植到总工程代码中,发现程序在进入到主循环的时候总是卡死。 寻找问题: 使用mdk DEBUG仿真,停止仿真程序会停在 HardFault_Handler 函数里的死循环while(1)中。这说明STM32出现了硬件错误。最后发现总工程中也用到了 DMA2 的通道 5 ,是用在 uart4_TX 上的,在硬件资源分配上产生了冲突,最后导致程序卡死。 解决办法 :使用 ADC3 多通道采集的 非DMA 方式, 让出DMA资源 。 2、 问题: 使用 MDK 写程序并编译出现 ..\Vehicle\pedal.c(166): error: #18: expected an expression 寻找问题: 最后在网络上找到了问题所在 Misc Controls 在MDK中默认是C90,将其改为C99即可解决 解决办法 :如下图所示添加--c99 3、 问题: 定义结构体导致出现内存大小异常问题 4、 问题: 在调试别人的程序过程中发现程序卡死。 寻找问题: 经过仿真发现程序总是在启动文件的 DMA2_Channel2_IRQHandler DMA2_Channel3_IRQHandler DMA2_Channel4_5_IRQHandler B . ENDP ALIGN

Go语言入门教程

橙三吉。 提交于 2019-11-28 19:31:18
1.概述 Go 是一个开源的编程语言,它能让构造简单、可靠且开发高效的软件变得容易。Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月开源,在2012年早些时候发布了Go 1稳定版本。现在Go的开发已经是完全开放的,并且拥有一个活跃的社区。 2.优缺点 2.1 优点 开源 编译性语文,运行高速 语法简洁 并行处理封装 内存管理、数组安全 2.2缺点 作为编译性语言调试不如脚本方便 在数据分析上没有脚本适用 对底层的控制没有基础语言灵活 3.用途 常应用于搭载 Web 服务器,存储集群或类似用途的巨型中央服务器。对于高性能分布式系统领域而言,Go 语言无疑比大多数其它语言有着更高的开发效率。它提供了海量并行的支持,在服务端的开发优势较大。 4.语言基础 4.1基本数据类型 4.1.1变量和常量 普通赋值: // var 变量名称 变量类型 = 值 var num int = 1 平行赋值: var num1, num2 int = 1, 2 多行赋值: var ( num1 int = 1 num2 int = 2 ) 4.1.2整数类型的命名和宽度 Go的整数类型一共有10个其中计算架构相关的整数类型有两个: 有符号的整数类型

工作学习中的一些小的收获(持续更新)

偶尔善良 提交于 2019-11-28 19:01:52
1. 使用extern在动态库和主函数中共享变量,设置条件等 ,两种情况   A. 动态库中定义,主函数文件中声明   B. 与A相反,但是这个时候需要加上 -W1 --export-dynamic编译选项,否则会报链接错误 2. 如果一个类型的定义被用typedef 隐藏起来了(一般是个结构体指针),两种情况 :   A. 定义这个这个类型的.c文件能看到,这时候如果想用这个类型的成员变量,可以把声明定义部分挪到.h头文件中,并根据编译情况,调整相  应的依赖情况   B. 如果c文件都被闭源了(只提供h和lib),只能通过头文件中查找看看是否有对应的接口来访问相应的变量了 3. json与xml文件对比 TBD 4. 进程间的local socket通信与dbus通信 TBD 来源: https://www.cnblogs.com/Arnold-Zhang/p/11421642.html

ES6

試著忘記壹切 提交于 2019-11-28 18:04:24
一、ES6概念   JavaScript是EMCAScript的一种,它只是一种标准,js一直被各个语言诟病,因为js的作用域让开发者困扰,也因为js在以前不算是面向对象的语言。ES6的出现,让js语言上了一个台阶。js在发展过程中,一直在完善自己的漏洞。ES6将弱类型的js提升为中弱类型。所以我们必须要学习ES6。 二、定义变量   1.let是定义变量的关键字,特点是:     1)不允许重复声明     2)不存在预解析     3)在大括号中声明的变量只能在大括号中使用,如if、for的大括号中声明的变量   2.const是声明常量的,特点:     1)不允许重复声明     2)不允许重新赋值(可以给对象中新增属性)     3)声明的时候必须赋值     4)不存在预解析     5)在大括号中声明的变量只能在大括号中使用,如if、for的大括号中声明的变量 三、箭头函数   es6中的箭头函数是用来简写函数的 例:let fn = function( ){ console.log( 111); } 使用箭头函数简写: let fn = ()=>{ console.log( 111);}   带参数的写法: let fn = function( a,b){ console.log(a+b); } 使用箭头函数改写: let fn = ( a,b)=>{

java基础——异常

若如初见. 提交于 2019-11-28 16:12:55
Exception(异常):是程序本身可以处理的异常。Exception 类有一个重要的子类 RuntimeException。RuntimeException 类及其子类表示“JVM 常用操作”引发的错误。例如,若试图使用空值对象引用、除数为零或数组越界,则分别引发运行时异常(NullPointerException、ArithmeticException)和 ArrayIndexOutOfBoundException。 Exception(异常)分两大类:运行时异常和非运行时异常(编译异常)。程序中应当尽可能去处理这些异常。 1.运行时异常:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。 2.非运行时异常 (编译异常):是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常