函数声明

Keil (MDK)中变量定义位置

被刻印的时光 ゝ 提交于 2020-01-16 14:36:54
在keil中编译程序时提示:error: #268: declaration may not appear after executable statement in block 错误, 说是声明不能在执行语句后,也就是说变量的声明写在了使用语句的后面,导致程序在编译链接时, 使用到该变量的语句找不到这个变量,故出错。 这其实与keil所采用的标准有关,Keil5(版本是5,14.2)默认采用C89标准, //报错代码 flag = 0; u16 i = 0; 这个标准要求在编写程序时变量不能放在函数体中间,只能在函数最开始定义或声明变量。如何修改呢? 方法1 将变量都放在函数最开头,且注意变量在函数体中出现的先后顺序,应该按照后面使用的顺序进行定义或声明变量,否则仍会报同样的错。 //修改代码 u16 i = 0; flag = 0; 方法2 将keil的标准改为C99,重新编译即可。如图所示,在option的C/C++标签中勾选上C99 Mode 选项(在中间右侧)。 方法3 来源: https://www.cnblogs.com/ys77/p/11541775.html

ch06 面向对象特性

不问归期 提交于 2020-01-16 05:50:25
文章目录 面向对象特性 理解面向对象概念 类和对象 多态性 继承 创建类、属性和操作 类结构 构造函数 析构函数 类的实例化 使用类属性 调用类操作 使用private和public关键字控制访问 编写访问器函数 在PHP中实现继承 通过继承使用private和protected控制可见性 覆盖 使用final关键字进制继承和覆盖 多重继承 接口 Trait 类设计 自定义类代码 面向对象高级功能 使用类级别常量 实现静态方法 检查类类型和类型提示 延迟静态绑定 对象克隆 使用抽象类 __call()重载方法 __autoload()方法 迭代器和迭代 生成器 将类转换成字符串 使用反射API 名称空间 子名称空间 全局名称空间 名称空间的导入和别名 面向对象特性 理解面向对象概念 面向对象(OO)开发方法会在系统中引入对象的分类、关系和属性,从而帮助程序开发和代码重用。 类和对象 面向对象软件由一系列具有属性和操作的自包含对象组成,这些对象之间能够交互,从而达到我们的要求。对象属性是与对象相关的特性或变量。操作则是对象可以执行的用来改变其自身或对外部产生影响的方法、行为或函数(属性可以与成员变量和特性这些词交替时通,而操作也可以与方法交替使用)。 面向对象软件的一个重要优点是支持和鼓励封装的能力,封装也叫数据隐藏。从本质上讲,访问一个对象中的数据只能通过对象的操作来实现

Qt 查找功能

流过昼夜 提交于 2020-01-15 23:52:14
版权声明 该文章原创于Qter开源社区( www.qter.org ),作者yafeilinux,转载请注明出处! 导语 这一篇我们来加上查找菜单的功能。因为要涉及Qt Creator的很多实用功能,所以单独用一篇文章来介绍。以前都用设计器设计界面,而这次我们用代码实现一个简单的查找对话框。除了讲解怎么实现查找功能,这里还详细地说明了怎么进行类中方法的查找和使用。其中也讲解了Qt Creator程序中怎样在函数的声明位置和定义位置间进行快速切换。 环境是: Windows 7 + Qt 4.8.1+ Qt Creator 2.4.1 目录 一、添加查找对话框 二、实现查找功能 正文 一、添加查找对话框 1. 我们继续在前一篇程序的基础之上进行更改。首先到mainwindow.h文件中添加类的前置声明(对于什么是前置声明,以及这样使用的好处,可以在网上百度): class QLineEdit ; class QDialog ; 前置声明所在的位置跟头文件包含的位置相同。 然后在private中添加对象定义: QLineEdit * findLineEdit ; QDialog * findDlg ; 下面再添加一个私有槽声明: private slots : void showFindText(); 槽可以看做是一个函数,只不过可以和信号进行关联。 2. 下面到mainwindow

编程相关英语大全

冷暖自知 提交于 2020-01-15 07:36:25
很实用的编程英语词库,共收录一千五百余条词汇。 第一部分: application 应用程式 应用、应用程序 application framework 应用程式框架、应用框架 应用程序框架 architecture 架构、系统架构 体系结构 argument 引数(传给函式的值)。叁见 parameter 叁数、实质叁数、实叁、自变量 array 阵列 数组 arrow operator arrow(箭头)运算子 箭头操作符 assembly 装配件 assembly language 组合语言 汇编语言 assert(ion) 断言 assign 指派、指定、设值、赋值 赋值 assignment 指派、指定 赋值、分配 assignment operator 指派(赋值)运算子 = 赋值操作符 associated 相应的、相关的 相关的、关联、相应的 associative container 关联式容器(对应 sequential container) 关联式容器 atomic 不可分割的 原子的 attribute 属性 属性、特性 audio 音讯 音频 A.I. 人工智慧 人工智能 background 背景 背景(用於图形着色) 後台(用於行程) backward compatible 回溯相容 向下兼容 bandwidth 频宽 带宽 base class

17、ES6

做~自己de王妃 提交于 2020-01-15 06:13:36
一、声明变量 (一)let: 声明变量 1.没有声明提前的概念 2.不能在同一作用域重复声明同一个变量 3.块级作用域{} 1 let a = 20; 2 function show(){ 3 let a = 20; 4 } 5 console.log(a) 6 报错:Identifier 'a' has already 7 been declared 变量a已经被声明 案例:输出按钮索引值 1 //ES5方法 2 //相当于var i; 3 for(var i=0;i<btns.length;i++){ 4 btn[i].idx = i; 5 btns[i].onclick = function(){ 6 setTimeout(function(){ 7 console.log(this.idx); 8 }.bind(this),2000) 9 } 10 } 11 //ES6方法: 12 for(let i=0;i<btns.length;i++){ 13 //相当于let i; 14 btns[i].onclick = function(){ 15 setTimeout(function(){ 16 console.log(i); 17 },2000) 18 } 19 } 20 //考察知识点: 21 //1.变量的访问规则 22 //2.let的块级作用域{} (二

《JavaScript Ninja》之闭包

允我心安 提交于 2020-01-15 00:30:01
闭包 闭包是什么,它们是如何工作的 闭包 是一个函数在创建时允许该自身函数访问并操作该自身函数之外的变量时所创建的 作用域 。 即:闭包可以让函数访问所有的变量和函数,只要这些变量和函数存在于该函数声明时的作用域内就行。 一个简单的闭包: /* 分析:在同一个作用域内声明一个变量和函数,`outerFunction`可以看到并访问`outerValue`。 * 此处是全局作用域,该作用域实际上就是一个闭包,从未消失过(因为页面已经被加载了)。 */ var outerValue = "ninja"; function outerFunction() { alert(outerValue); } outerFunction(); // ninja 更深入的闭包: var outerValue = "ninja"; var later; // 声明一个全局变量 function outerFunction() { // 在函数内部声明一个值。该变量的作用域是限制在该函数内部,并且在函数外部访问不到 var innerValue = "samurai"; // 在外部函数内,声明一个内部函数。注意,声明该函数时,innerValue是在作用域内的。 function innerFunction() { alert(outerValue); alert(innerValue); }

JavaScript基础2——关于变量

可紊 提交于 2020-01-14 18:42:40
变量的声明 变量的定义:使用var关键字来声明,区分大小写的。 注意 :不用var,会污染全局变量 。 变量的命名规范是:字母,数字,$符和下划线构成,但是不可以以数字开始,并且变量名不可以使用关键字。 1、声明变量 1 <script type="text/javascript"> 2 var i=123;//使用var关键字声明变量 3 var s="Jackie"; 4 temp="直接赋值使用变量";//如果您所赋值的变量还未进行过声明,该变量会自动声明。 5 document.write(i+" "+s+" "+temp); 6 </script> 2、重新声明变量 1 <script type="text/javascript"> 2 var i=123;//使用var关键字声明变量 3 var i;//在重新声明该变量后,变量的值不会被重置或清除。 4 document.write("i的值是:"+i);//i的值还是123 5 </script> 3、 命名习惯 变量命名都以类型前缀+有意义的单词组成,用驼峰式命名法增加变量和函式的可读性。例如:sUserName,nCount。 前缀规范: 每个局部变量都需要有一个类型前缀,按照类型可以分为: 1 2 3 4 5 6 7 8 s:表示字符串。例如:sName,sHtml; n:表示数字。例如:nPage

JS 之 引擎运行原理

一个人想着一个人 提交于 2020-01-14 11:06:13
今天跟大家分享下JS 之 引擎运行原理的知识。 1 一些名词 JS引擎 — 一个读取代码并运行的引擎,没有单一的“JS引擎”;,每个浏览器都有自己的引擎,如谷歌有V。 作用域 — 可以从中访问变量的“区域”。 词法作用域— 在词法阶段的作用域,换句话说,词法作用域是由你在写代码时将变量和块作用域写在哪里来决定的,因此当词法分析器处理代码时会保持作用域不变。 块作用域 — 由花括号{}创建的范围 作用域链 — 函数可以上升到它的外部环境(词法上)来搜索一个变量,它可以一直向上查找,直到它到达全局作用域。 同步 — 一次执行一件事, “同步”引擎一次只执行一行,JavaScript是同步的。 异步 — 同时做多个事,JS通过浏览器API模拟异步行为 事件循环(Event Loop) - 浏览器API完成函数调用的过程,将回调函数推送到回调队列(callback queue),然后当堆栈为空时,它将回调函数推送到调用堆栈。 堆栈 —一种数据结构,只能将元素推入并弹出顶部元素。 想想堆叠一个字形的塔楼; 你不能删除中间块,后进先出。 堆 — 变量存储在内存中。 调用堆栈 — 函数调用的队列,它实现了堆栈数据类型,这意味着一次可以运行一个函数。调用函数将其推入堆栈并从函数返回将其弹出堆栈。 执行上下文 — 当函数放入到调用堆栈时由JS创建的环境。 闭包 — 当在另一个函数内创建一个函数时,它

c++ 线程局部变量thread_local

僤鯓⒐⒋嵵緔 提交于 2020-01-14 10:53:13
Linux 中的线程局部存储(一)   本章节转自: https://blog.csdn.net/cywosp/article/details/26469435   在Linux系统中使用C/C++进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这对程序的性能带来了很大的影响,当然对于那些系统原生支持原子操作的数据类型来说,我们可以使用原子操作来处理,这能对程序的性能会得到一定的提高。   那么对于那些系统不支持原子操作的自定义数据类型,在不使用锁的情况下如何做到线程安全呢?本文将从线程局部存储方面,简单讲解处理这一类线程安全问题的方法。 一、数据类型   在C/C++程序中常存在全局变量、函数内定义的静态变量以及局部变量,对于局部变量来说,其不存在线程安全问题,因此不在本文讨论的范围之内。全局变量和函数内定义的静态变量,是同一进程中各个线程都可以访问的共享变量,因此它们存在多线程读写问题。   在一个线程中修改了变量中的内容,其他线程都能感知并且能读取已更改过的内容,这对数据交换来说是非常快捷的,但是由于多线程的存在,对于同一个变量可能存在两个或两个以上的线程同时修改变量所在的内存内容,同时又存在多个线程在变量在修改的时去读取该内存值,如果没有使用相应的同步机制来保护该内存的话,那么所读取到的数据将是不可预知的

qmake介绍

浪子不回头ぞ 提交于 2020-01-13 08:25:21
文章目录 简单介绍下qmake 简要介绍 关于pro文件 构建一个项目 使用第三方库 预编译头文件 让我们开始试试吧 从一个简单的例子开始 允许程序可以Debug 添加特定平台的源文件 设置当文件不存在的时候就停止qmake 检查多个条件 创建项目文件 pro文件基础 变量 关于空白 关于注释 内置函数和控制流 项目模板 常规配置属性 声明Qt的库 配置特性 声明其他的库 让我们开始创建一个普通的项目吧 Application的构建 构建一个testcase 构建一个库 构建一个插件 构建一个QtDesigner 插件 构建和安装在Debug和Release模式 构建所有的模式 在所有的模式下安装 运行qmake 请求语法 操作模式 qmake可以帮助我们在跨平台构建应用程序的时候变得更简单,我们可以通过写简单的几行必要的信息来生成构建文件,我们可以在任何的软件项目中使用qmake qmake基于pro文件生产构建文件,pro文件是由开发者创造的,它的用法也很方便,但是越复杂的应用程序,需要的pro文件越复杂 qmake的包含一些附加特性来支持Qt的开发,他将会自动的包含对于moc和uic的规则 qmake同样也可以在开发者不更改pro文件的时候生成VisualStudio的项目文件 简单介绍下qmake 简要介绍 qmak工具是一个面向项目的系统,可以帮助应用程序,库