![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程
文章平均质量分 72
矢口
这个作者很懒,什么都没留下…
展开
-
回调函数
网上很多博客都有讲回调函数,但没dang'ba原创 2014-05-03 15:55:48 · 644 阅读 · 0 评论 -
串口校验
下位机通过串口将数据传送给上位机,为了保证数据的正确往往需要进行校验,在传送一个字节的时候可以进行奇偶校验,传送一组数据的时候可以采用CRC校验等,但是在发送一组数据的时候采用CRC校验单片机往往太占资源,这就需要有一种比较简单的校验方法。可以采用类似于IP校验的方式,当发送IP包时,IP报头的校验和为:1、把校验和字段置为0;2、对IP头部中的每16bit进行二进制求和;3、如果转载 2014-05-07 22:12:33 · 1835 阅读 · 0 评论 -
Qt, QT/E, Qtopia 的区别
转自Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等。由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Qt都指用于Linux/Unix的Qt/X11。一般命名以qt-x11-opensource-xxx!QT/E -> Qtopia-core -> Qt-embedded-opensource(同一种鸟):Qt 在刚转载 2014-05-17 21:26:21 · 3203 阅读 · 0 评论 -
Linux下fork()、vfork()、clone()和exec()的区别
前三个和最后一个是两个类型。前三个主要是Linux用来创建新的进程(线程)而设计的,exec()系列函数则是用来用指定的程序替换当前进程的所有内容。所以exec()系列函数经常在前三个函数使用之后调用,来创建一个全新的程序运行环境。Linux用init进程启动其他进程的过程一般都是这样的。 下面说fork、vfork和clone三个函数。这三个函数分别调用了sys_fork、sy转载 2014-05-12 16:59:09 · 2498 阅读 · 0 评论 -
关于独立按键扫描程序的思考(整合两种算法)
最近刚开始学51单片机编程。学到按键扫描,在网上看到Etual 2008年总结的《新型按键扫描》的博文,很有感触。关于按键扫描的介绍和应用可以参照原文,本文只是我对程序的一些心得和体会。原文的链接找不到了,给个转载的:转载 2014-05-06 21:45:05 · 13252 阅读 · 3 评论 -
系统调用与API的区别
1.为什么用户程序不能直接访问系统内核模式提供的服务? 在linux中,将程序的运行空间分为内核与用户空间(内核态和用户态),在逻辑上它们之间是相互隔离的,因此用户程序不能访问内核数据,也无法使用内核函数。 2.什么是系统调用?答:系统调用就是一种特殊的接口。通过这个接口,用户可以访问内核空间。系统调用规定了用户进程进入内核的具体位置。 具体转载 2014-05-12 19:44:17 · 1019 阅读 · 0 评论 -
MinGW中的头文件路径级环境变量设置
这里帮助理解MinGW中,哪些是C++的头文件路径,哪些是C的头文件路径,通常C++程序设置头文件路径的话需要将C++的头文件路径设到C头文件路径的前面。比如C头文件目录%MINGW_PATH%/include下有头文件,里面有strcpy等c函数的声明。C++头文件目录%MINGW_PATH%/lib/gcc/mingw32/4.4.0/include/c++下有头文件,里面有s转载 2014-05-22 12:45:00 · 14441 阅读 · 0 评论 -
STL,ATL,WTL之间的联系和区别
STL即 Standard Template Library (标准模板库) STL是惠普实验室开发的一系列软件的统称。它是由Alexander Stepanov、Meng Lee和David R Musser在惠普实验室工作时所开发出来的。现在虽说它主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。 STL的代码从广义上讲分为三转载 2014-06-05 11:17:56 · 581 阅读 · 0 评论 -
MinGW与Cygwin
转自点击打开链接MingW和cygwin的区别-------------------------------------------------------------首先MingW和cygwin都可以用来跨平台开发。 MinGW是Minimalistic GNU for Windows的缩写,也就是Win版的GCC。 Cygwin则是全面模拟了Li转载 2014-05-23 23:15:02 · 1786 阅读 · 0 评论 -
c语言exit和return区别,在fork和vfork中使用
转自exit函数在头文件stdlib.h中。exit(0):正常运行程序并退出程序;exit(1):非正常运行导致退出程序;return():返回函数,若在main主函数中,则会退出函数并返回一值,可以写为return(0),或return 0。详细说: 1. return返回函数值,是关键字;exit是一个函数。 2. return是语言级别的,它表示转载 2014-07-18 16:38:39 · 709 阅读 · 0 评论 -
指针的大小到底是由谁决定?是多少?
整理自转载 2014-07-17 17:42:56 · 608 阅读 · 0 评论 -
C语言中exit()与return的区别
整理自1、exit函数和return函数的主要区别是: 1)exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。转载 2014-07-18 14:52:15 · 4313 阅读 · 0 评论 -
exit()与_exit()函数的区别(Linux系统中)
转自exit()与_exit()函数的区别(Linux系统中) 注:exit()就是退出,传入的参数是程序退出时的状态码,0表示正常退出,其他表示非正常退出,一般都用-1或者1,标准C里有EXIT_SUCCESS和EXIT_FAILURE两个宏,用exit(EXIT_SUCCESS);可读性比较好一点。作为系统调用而言,_exit和exit是一对孪生兄弟,它们究竟相转载 2014-07-19 23:20:31 · 609 阅读 · 0 评论 -
常量指针和指针常量的区别详解
转自常量指针和指针常量的区别详解 在C/C++中关键字const用来定义一个只读的变量或者对象,有如下优点 (1)便于类型检查,如函数的函数 fun(const int a) a的值不允许变,这样便于保护实参。 (2)功能类似与宏定义,方便参数的修改和调整。如 const int max = 100; (3)节省空间,如果再定义a = max,转载 2014-05-31 15:53:22 · 1132 阅读 · 1 评论 -
深入解析java虚拟机-jvm运行机制
转自oschina一:JVM基础概念 JVM(Java虚拟机)一种用于计算设备的规范,可用不同的方式(软件或硬件)加以实现。编译虚拟机的指令集与编译微处理器的指令集非常类似。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 Java虚拟机(JVM)是可运行Java代码的假想计算机。只要根据JV转载 2014-05-30 23:13:37 · 6279 阅读 · 0 评论 -
JAVA与编译语言及解释语言的关系
编译型语言是一次性编译成机器码,脱离开发环境独立运行,所以运行效率较高,但是由于编译成的是特定平台上机器码,所以可移植性差。编译型语言的典型代表有C、C++、FORTRAN、Pascal等。解释型语言是专门的解释器对源程序逐行解释成特定平台的机器码并执行的语言。解释型语言通常不会进行整体性的编译和链接处理,解释语言相当于把编译型语言的编译和解释过程混合到了一起同时完成。转载 2014-05-27 22:30:06 · 765 阅读 · 0 评论 -
Python、Lua和Ruby——脚本大P.K.
转自Python、Lua和Ruby——脚本大P.K.Python versus Lua Versus RubyPython、Lua和Ruby——脚本大P.K.Tom Gutschmidt 著赖勇浩(http://blog.csdn.net/lanphaday) 译So which of the three languages is the转载 2014-07-04 17:54:10 · 689 阅读 · 0 评论 -
gcc和ld 中的参数 --whole-archive 和 --no-whole-archive
转自首先 --whole-archive 和 --no-whole-archive 是ld专有的命令行参数,gcc 并不认识,要通gcc传递到 ld,需要在他们前面加 -Wl,字串。--whole-archive 可以把 在其后面出现的静态库包含的函数和变量输出到动态库,--no-whole-archive 则关掉这个特性。比如你要把 liba.a libb.a libc转载 2014-07-25 00:13:03 · 7519 阅读 · 0 评论 -
java虚拟机运行机制
首先简单阐述下解释型语言和编译型语言的联系与区别。 编译型语言是通过编译器将程序编译成目标机器所能识别的机器码,而解释型语言不需要编译过程。由该语言的解释器读取脚本,按照语法规则进行解释,然后调用解释器内建的命令(或者库函数)。例如,C语言的printf()函数经过静态编译后,printf()所需的所以代码都以机器码的形式写入可执行文件中,shell在执行程序时,在指定路径搜索该文件,然转载 2014-05-30 23:04:21 · 1095 阅读 · 0 评论 -
Java虚拟机工作原理详解
转自一、类加载器首先来看一下java程序的执行过程。 从这个框图很容易大体上了解java程序工作原理。首先,你写好java代码,保存到硬盘当中。然后你在命令行中输入[java] view plaincopyjavac YourClassName.j转载 2014-05-27 21:59:26 · 552 阅读 · 0 评论 -
C++ 基类和派生类
转自C++ 基类和派生类本讲讨论基类和派生类的基本概念。 通过继承机制,可以利用已有的数据类型来定义新的数据类型。所定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员。我们称已存在的用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。 在C++语言中,一个派生类可以从一个基类派生,也可以从多个基类派生。从一个基类派生的继承转载 2014-08-01 17:29:15 · 576 阅读 · 0 评论 -
C++ 类的静态成员详细讲解
转自在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。所以在所有对象中都可以共享它。使用静态成员变量实现多个对象之间的数据共享不会破坏隐藏的原则,保证了安全性还可以节省内存。静态成员的定义或声明要加个关键static。静态成员可以通过双冒号来使用即::。 在C++中类的静态成员变量和静态成员函数是个容易出错的地方,本文先通过几个例子转载 2014-08-01 23:49:10 · 513 阅读 · 0 评论 -
C#与C++、Java之比较概览
转自C#与C++、Java之比较概览Ben Albahari 著 荣耀 译本文翻译时间较早。欢迎指出任何误失。谢谢。感谢以下人士的支持和反馈(按字母先后顺序):Don Box、C.R. Manning、Joe Nalewabau、John Osborn、Thomas Rhode、Daryl Richter。本文以C#提供的新编程方式以及它对两个近邻转载 2014-07-30 23:42:35 · 609 阅读 · 0 评论 -
横向技术分析C#、C++和Java优劣
转自C#诞生之日起,关于C#与Java之间的论战便此起彼伏,至今不辍。抛却Microsoft与Sun之间的恩怨与口角,客观地从技术上讲,C#与Java都是对传统面向对象程序设计在组件化软件时代的革新之果,可谓殊途同归。虽说两个语言有着"90%的重叠",但那另外"10%的较量"也往往能够左右一个天平的方向。本文将携90%之共,论10%之异,对两个语言做纯技术品评。文章不涉及两个语转载 2014-07-30 23:11:34 · 597 阅读 · 0 评论 -
c++和java(c#)之间的pk
转自1、谁好谁坏? 如同当初我没有想到会进入java阵营一样,这次闯入c++阵营也是意料之外的。多年前,受到微软的影响,我几乎是微软的铁杆,对从QB到c#都是深入学习过的。我一直以为微软的软件是做的最人性化的,最好的。2年前,不经意的走进了java的大门,虽然我学习过java,但是对于这个不能做漂亮界面的语言一直有抵触的思想。这一次走入,让我成了java的忠实支持者。支持java转载 2014-07-30 18:07:45 · 651 阅读 · 0 评论 -
C语言中的强符号与弱符号
转自一、概述在C语言中,函数和初始化的全局变量(包括初始化为0)是强符号,未初始化的全局变量是弱符号。对于它们,下列三条规则使用:① 同名的强符号只能有一个,否则编译器报"重复定义"错误。② 允许一个强符号和多个弱符号,但定义会选择强符号的。③ 当有多个弱符号相同时,链接器选择占用内存空间最大的那个。 二、哪些符号是弱符号?我们经常在编程中碰到一种情转载 2014-07-25 20:32:41 · 996 阅读 · 0 评论 -
C语言中返回字符串函数的四种实现方法
转自C语言中返回字符串函数的四种实现方法有四种方式:1。使用堆空间,返回申请的堆地址,注意释放2。函数参数传递指针,返回该指针3。返回函数内定义的静态变量(共享)4。返回全局变量 其实就是要返回一个有效的指针,尾部变量退出后就无效了。 使用分配的内存,地址是有效 char *fun() { char* s转载 2014-06-22 15:15:53 · 1393 阅读 · 0 评论 -
C语言中.h和.c文件解析
转自 简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件) 4.连接阶段,将各个目标文件中的各段代码进行绝对转载 2014-07-29 17:35:28 · 1506 阅读 · 0 评论 -
C语言中的volatile
转自volatile的重要性对于搞嵌入式的程序员来说是不言而喻的,对于volatile的了解程度常常被不少公司在招聘嵌入式编程人员面试的时候作为衡量一个应聘者是否合格的参考标准之一,为什么volatile如此的重要呢?这是因为嵌入式的编程人员要经常同中断、底层硬件等打交道,而这些都用到volatile,所以说嵌入式程序员必须要掌握好volatile的使用。其实就象读者所熟悉的c转载 2014-06-21 21:44:42 · 739 阅读 · 0 评论 -
Linux core 文件介绍
转自Linux core 文件介绍1. core文件的简单介绍在一个程序崩溃时,它一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的。2. 开启或关闭core文件的生成用以下命令来阻止系统生成core文件:ulimit -c 0下面的命令可以检查生成core文件的选项是否打开:ulimit -转载 2014-06-22 21:27:09 · 512 阅读 · 0 评论 -
C语言编译过程详解
转自C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程。从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接转载 2014-07-31 14:55:05 · 1825 阅读 · 0 评论 -
C++ 类访问控制(public/protected/private)
转自C++ 类访问控制(public/protected/private)C++中 public,protected, private 访问标号小结第一:private, public, protected 访问标号的访问范围。private:只能由1.该类中的函数、2.其友元函数访问。不能被任何其他访问,该类的对象也不能访问。prote转载 2014-08-01 14:08:59 · 539 阅读 · 0 评论 -
Debug和Release之本质区别
转自Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还转载 2014-07-31 17:22:08 · 3547 阅读 · 0 评论 -
C/C++ 中的0长数组(柔性数组)
转自在标准C和C++中0长数组如charArray[0]是不允许使用的,因为这从语义逻辑上看,是完全没有意义的。但是,GUN中却允许使用,而且,很多时候,应用在了变长结构体中,如:StructPacket{Int state;Int len;Char cData[0]; //这里的0长结构体就为变长结构体提供了非常好的支持}; 首先对0长数组做一个解转载 2014-08-09 00:12:37 · 541 阅读 · 0 评论 -
双缓冲(Double Buffer)原理和使用
转自双缓冲(Double Buffer)原理和使用一、双缓冲作用 双缓冲甚至是多缓冲,在许多情况下都很有用。一般需要使用双缓冲区的地方都是由于“生产者”和“消费者”供需不一致所造成的。这样的情况在很多地方后可能会发生,使用多缓冲可以很好的解决。我举几个常见的例子: 例 1. 在网络传输过程中数据的接收,有时可能数据来的转载 2014-09-18 22:15:10 · 1549 阅读 · 0 评论 -
C语言运算符优先级
转自优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右--()圆括号(表达式)/转载 2014-09-06 13:22:07 · 581 阅读 · 0 评论 -
大端和小端及如何判断
转自一、大端与小端、MSB与LSB在嵌入式开发中,大端(Big-endian)和小端(Little-endian)是一个很重要的概念。假如现有一32位int型数0x12345678,那么其MSB(Most Significant Byte,最高有效字节)为0x12,其LSB (Least Significant Byte,最低有效字节)为0x78,在CPU内存中有两种存放方式:转载 2014-08-15 23:56:13 · 903 阅读 · 0 评论 -
字节序:大端与小端
转自本文背景:对于嵌入式工程师来说,不仅要熟悉各种数据类型,还需要熟谙各种数据在内存中的表达形式。软件高手们通过内存与指针微妙的配合,总能摩擦出惊艳的火花。在讨论数据的存储结构时,必然会涉及到大端模式(Big-Endian)和小端模式(Little-Endian)的问题。平时编程时对于这个概念并不会有太多接触,但是在通讯协议的处理、可移植性方面就必须要考虑到字节序的问题转载 2014-08-16 01:35:54 · 535 阅读 · 0 评论 -
可重入
转自若一个程序或子程序可以“安全的被并行执行(Parallel computing)”,则称其为可重入(reentrant或re-entrant)的。即当该子程序正在运行时,可以再次进入并执行它(并行执行时,个别的执行结果,都符合设计时的预期)。可重入概念是在单线程操作系统的时代提出的。一个子程序的重入,可能由于自身原因,如执行了jmp或者call,类似于子程序的递归调用;或者由于转载 2014-08-18 15:38:32 · 1218 阅读 · 0 评论 -
IEEE二进制浮点数算术标准(IEEE 754)
参考自IEEE 754转载 2014-08-16 21:49:15 · 3935 阅读 · 0 评论