符号函数

GCC编译选项

老子叫甜甜 提交于 2020-01-25 08:19:36
转载自http://www.cnblogs.com/xmphoenix/archive/2011/03/21/1989944.html gcc 提供了大量的警告选项,对代码中可能存在的问题提出警 告,通常可以使用 -Wall 来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration -Wcomment -Wformat -Wmain (only for C/ObjC and unless -ffreestanding) -Wmissing-braces -Wnonnull -Wparentheses -Wpointer-sign -Wreorder -Wreturn-type -Wsequence-point -Wsign-compare (only in C++) -Wstrict-aliasing -Wstrict-overflow=1 -Wswitch -Wtrigraphs -Wuninitialized (only with -O1 and above) -Wunknown-pragmas -Wunused-function -Wunused-label -Wunused

FreeRTOS——1

北战南征 提交于 2020-01-24 03:37:47
以下转载自安富莱电子: http://forum.armfly.com/forum.php FreeRTOS 的特点 FreeRTOS 的主要特点如下: 1. 支持抢占式调度,合作式调度和时间片调度。 2. SafeRTOS 作为 FreeRTOS 的衍生品大大提高了 FreeRTOS 在代码完整性方面的信心。 3. 用于低功耗的 Tickless 模式。 4. 支持 35 种系统架构。 5. FreeRTOS-MPU 支持 M3/M4/M7 内核的 MPU(内存保护单元)。 6. 设计的简单易用,典型的内核使用大小在 4k-9k。 7. 移植非常简单,代码主要用 C 编写。 8. 同时支持合作式和抢占式任务。 9. 支持消息队列、 二值信号量、 计数信号量、 递归信号量和互斥信号量,可用于任务与任务间的消息传 递和同步,任务与中断间的消息传递和同步。 10. 优先级继承方式的互斥信号量。 11. 高效的软件定时器。 12. 强大的跟踪执行函数。 13. 堆栈溢出检查。 14. 提供丰富的,配置好的工程例子。 15. 提供论坛技术支持,有可选的商业支持和许可版本。 16. 任务的数量不限。 17. 任务优先级数量不限。 18. 多个任务可以分配相同优先级,即支持时间片调度。 19. 免费的开发工具。 20. 免费的嵌入式软件源码。 21. 免版权费。 FreeRTOS 的编码标准

source insight 4.0的基本使用方法

坚强是说给别人听的谎言 提交于 2020-01-16 03:07:26
直接鼠标点击函数,下面窗口会显示函数的定义。 实时跟踪源文件更新,并且si项目上的编辑会更改源码。极佳的代码阅读工具。 可以搜索函数在项目中的调用情况。 一、项目管理 1、新建一个项目 快捷键Alt+Shift+N可以打开新建项目对话框,然后根据提示填好项目存储位置,源文件位置等,然后会出现添加删除项目文件对话框,选中自己想要编辑和浏览的文件添加即可,这样就建好了一个项目。 2、添加和删除项目文件 (1)、在添加删除文件前,可以先设置文件过滤器,菜单栏-选项-文档选项,就可以看到文件过滤器了,怎么设置应该是一目了然的。 (2)、菜单栏-项目-添加或删除文件,即可打开添加和删除项目文件对话框。 3、关闭项目、打开项目、删除项目 关闭项目:Alt+Shift+W 打开项目:Alt+Shift+P,在项目列表里选中项目进行打开 删除项目:菜单栏-项目-删除项目 4、同步文件 快捷键Alt+Shift+S可以同步文件,同步文件后就可以自动找到源代码之间的依赖关系了(如:可以自动找到调用某个函数或变量的位置)。 5、项目报告 菜单栏-项目-项目报告,获取当前项目的文件个数,代码行数等。 6、重建项目 菜单栏-项目-重建项目,重新同步代码依赖关系。 二、Source Insight的7种窗口的使用。 1、文档窗口 (1)、修改窗口颜色属性:菜单栏-选项-参数-颜色标签,可以修改背景颜色

第四章-文件和目录

…衆ロ難τιáo~ 提交于 2020-01-14 02:26:18
文件I/O 引言 函数stat、fstat、fstatat和lstat 文件类型 设置用户ID和设置组ID 文件访问权限 函数access和facessat 函数umask 函数chmod、fchmod和fchomodat 函数chown、fchown、fchownat和lchown 文件长度 文件截断 文件系统 函数link、linkat、unlink、unlinkat和remove 函数rename和renameat 创建和读取符号链接 文件的时间 函数futimens、utimensat和utimes 函数mkdir、mkdirat和rmdir 读目录 遍历文件层次结构 函数chdir、fchdir和getcwd 设备特殊文件 引言 本章内容覆盖 文件的所有属性 修改这些属性的各个函数 unix文件系统的结构以及符号链接 对目录进行操作的各个函数 函数stat、fstat、fstatat和lstat # include <sys/types.h> # include <sys/stat.h> # include <unistd.h> int stat ( const char * pathname , struct stat * buf ) ; //返回命名文件有关的信息结构 int fstat ( int fd , struct stat * buf ) ; /

第2章 理解面向对象

落花浮王杯 提交于 2020-01-12 04:28:34
理解面向对象 本章要点: 面向对象编程方法 1.结构化程序设计 2.面向对象程序设计 UML(统一建模语言)介绍 面向对象设计方式由OOA(面向对象分析)、OOD(面向对象设计)和OOP(面向对象编程)三个部分组成。其中OOA和OOD已经采用UML(统一建模语言)来描述。因此本章主要分为两部分,首先介绍OOP(面向对象编程)面向对象编程,接着介绍UML(统一建模语言)的面向对象编程分析思想。 本章要点: 面向对象编程方法 软件开发领域有两种主流的开发方法:结构化开发方法和面向对象开发方法。 1.结构化程序设计 1) 结构化程序设计简介 ​ 结构化程序设计里最小的程序单元是函数,每个函数都负责完成一个功能,用以接收一些输入数据,函数对这些输入数据进行处理,处理结束后输出一些数据。整个软件系统是由一个个函数组成,程序首先调用主函数,主函数再依次调用其他函数,普通函数之间也可以依次调用,这样就完成了软件系统的功能。下图是结构化软件的结构示意图。 从上图中可以看出,结构化程序设计采用自上而下的设计方式,在这个过程中需要考虑每个模块应该分解成哪些子模块,每个子模块又可以分解成哪些更小的模块,依次下去….,直到模块细化成一个函数为止。 结构化编程的缺点: 设计不够直观 适应性差,可扩展性不强 2) 结构化程序的三种基本结构 程序设计的三种基本结构包括: 顺序结构:源代码排列顺序依次执行

linux设备驱动(二)

我的未来我决定 提交于 2020-01-08 20:42:12
文章目录 内核模块结构 加载函数 卸载函数 许可证声明 模块参数 模块导出符号 加载函数 卸载函数 模块参数 参数类型 权限类型 导出符号 模块的声明与描述 作者 描述 版本 设备表 别名 内核模块结构 加载函数 通过insmod或者modprobe加载模块时,加载函数将会自动执行 卸载函数 通过rmmod卸载模块时,卸载函数将会被自动执行 许可证声明 描述内核模块的许可权限,如果不声明,加载时将收到内核被污染(Kernel Tainted)的警告 大多数情况下,采用GPL v2 MODULE_LICENSE ( "GPL v2" ) ; 模块参数 模块参数是模块被加载时,可以传递给它的值,对应于模块内部的局部变量 模块导出符号 模块可以导出符号(symbol),对应函数或变量,如果导出,则其它模块就可以使用了 加载函数 形式被固定为 module_init(函数名); ,返回整型值,若初始化成功,则返回0,失败返回错误码 在内核中,也可以通过 request_module(模块名) 函数灵活地加载其它内核模块 一般以 __init 标识对初始化函数做额外声明,原型如下 # define __init __attribute__ ((__section__ (".init.text"))) __cold 指定该函数,在链接的时候,放到 init.text 段,初始化的时候

Yacc 与 Lex 快速入门

情到浓时终转凉″ 提交于 2019-12-23 21:21:45
developerWorks 中国 > Linux > Yacc 与 Lex 快速入门 Lex 与 Yacc 介绍 文档选项 打印本页 将此页作为电子邮件发送 级别: 初级 Ashish Bansal ( mailto:abansal@ieee.org?subject=Yacc 与 Lex 快速入门&cc=abansal@ieee.org ), 软件工程师, Sapient 公司 2000 年 11 月 01 日 Lex 和 Yacc 是 UNIX 两个非常重要的、功能强大的工具。事实上,如果你熟练掌握 Lex 和 Yacc 的话,它们的强大功能使创建 FORTRAN 和 C 的编译器如同儿戏。Ashish Bansal 为您详细的讨论了编写自己的语言和编译器所用到的这两种工具,包括常规表达式、声明、匹配模式、变量、Yacc 语法和解析器代码。最后,他解释了怎样把 Lex 和 Yacc 结合起来。 Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 让我们从 Lex 开始吧。 Lex Lex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,这个我们一会儿就要讨论。 一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返回一个标记

嵌入式软件工程师经典面试题

[亡魂溺海] 提交于 2019-12-23 21:01:56
1、int a[10]={1,2,3,4,5,6,7,8,9,0}; int *p=&a[1]; 则p[6]等于8 2、整数数组清零:bzero(),memset()。 3、sizeof();测试变量所占地址的字节数 4、 main() { char *str[]={“ab”,“cd”,“ef”,“gh”,“ij”,“kl”}; char t; t=(str+4)[-1]; printf("%s",t); }则显示"gh" 5、小端:低位字节数据存储在低地址 大端:高位字节数据存储在低地址 例如:int a=0x12345678;(a首地址为0x2000) 0x2000 0x2001 0x2002 0x2003 0x12 0x34 0x56 0x78 大端格式 6、异步IO和同步IO区别 如果是同步IO,当一个IO操作执行时,应用程序必须等待,直到此IO执行完,相反,异步IO操作在后台运行, IO操作和应用程序可以同时运行,提高系统性能,提高IO流量; 在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行,而异步文件IO中, 线程发送一个IO请求到内核,然后继续处理其他事情,内核完成IO请求后,将会通知线程IO操作完成了。 7、用变量a定义 一个整型数 int a; 一个指向整型数的指针 int a; 一个指向指针的指针

php数组函数相关操作

时光怂恿深爱的人放手 提交于 2019-12-23 00:18:11
首先关于php数组的相关操作,其实在函数库里面都有,这里自己强烈推荐以下网址可以查阅函数:还有一些其他的东西。 http://www.t086.com/code/php/ 这里先简单的给一个字符串截取函数: php //构造字符串 $str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; echo "原字符串:".$str." "; //按各种方式进行截取 $str1 = substr($str,5); echo "从第5个字符开始取至最后:".$str1." "; $str2 = substr($str,9,4); echo "从第9个字符开始取4个字符:".$str2." "; $str3 = substr($str,-5); echo "取倒数5个字符:".$str3." "; $str4 = substr($str,-8,4); echo "从倒数第8个字符开始向后取4个字符:".$str4." "; $str5 = substr($str,-8,-2); echo "从倒数第8个字符开始取到倒数第2个字符为止:".$str5." "; ?> 然后关于textarea中的字符的处理自己是这么写的: $str = $_POST['test']; $arr = explode("\n", $str); $total = count($arr); $output

PHP常用符号和函数

戏子无情 提交于 2019-12-22 12:52:09
(转)最近在写PHP程序的时候发现了一些特殊的PHP符号,例如连续小于符号,三个小于符号,eot,eod,echo示例,print示例等,突然间 发现用这么久的PHP了,竟然连PHP的基本符号都没有认全,看到@号还查了半天才知道什么意思.把基本符号和一些外面常见的PHP符号整理成了列表,在我的博客上帖一下吧,需要的朋友们可以参考下PHP相关的特殊符号~ 注解符号: // 单行注解 /* */ 多行注解 引号的使用 ’ ’ 单引号,没有任何意义,不经任何处理直接拿过来; ” “双引号,php动态处理然后输出,一般用于变量. 变量形态: 一种是True 即 真的; 另一种是False 即假的 常见变量形态: string 字串(数字\汉字\等等) integer 整数(1、2、3、4、5、0、-1、-2、等等) double 浮点数(小数点) array 数组 object 对象 可以用的方法有gettype($mix) 和settype($mix,$typename); 常用符号 \” 双引号 \\ 反斜线 \n 换行 \r 送出 \t 跳位(TAB) 运算符号 + 加法运算 – 减法运算 * 乘法运算 / 除法运算 % 取余数 ++ 累加 – 累减1 . 把字串相加 设定运算 = 把右边的值代入左边(一定要会) += 把右边的值加到左边 -= 把右边的值减到左边 *=