- 博客(121)
- 资源 (21)
- 收藏
- 关注
转载 C++标准库的学习笔记(开篇)
C++标准库的学习笔记 C++标准库是个极为庞大的体系,因此面面俱到的介绍几乎是不可能的。而且任何一个系统都有其复杂的一面,我觉得即使是只介绍 C 的标准库其工作量也是巨大的,所以我这次整理的内容只也是从宏观入手。介绍 C++标准库相关细节的文章(或书籍)有不少,不同的文章也有各自的侧重点。我觉得了解C++标准库有助于加深对 C++ 的理解,因此我想整理一下自己的学习心得,也可以使大家从
2012-08-31 16:37:41 1508
转载 理解可变参数va_list、va_start、va_arg、va_end原理及使用方法
概述 由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦;即使采用C++,如果参数个数不能确定,也很难采用函数重载.对这种情况,有些人采用指针参数来解决问题.下面就c语言中处理不定参数数目的问题进行讨论.实现大家先看几宏.C标准库 stdarg.h头文件,有如下几个宏定义:#define _INTSIZEOF(n) ((sizeof(n)+size
2012-08-30 15:50:00 1217
转载 setjmp和longjmp的"非本地跳转"
C语言中要实现"非本地跳转",C标准函数库提供了2个函数setjmp和longjmp来实现这个功能。头文件在。setjmp/longjmp的典型用途是例外处理机制的实现:利用longjmp恢复程序或线程的状态,甚至可以跳过栈中多层的函数调用。函数声明: SYNOPSIS #include int setjmp(jmp_buf env);DESC
2012-08-30 15:08:55 827
转载 setjmp与longjmp相结合,实现程序的非本地的跳转
首先需要弄白一个概念:本地跳转和非本地跳转本地跳转就是在一个函数内部不同代码位置跳转非本地跳转就是执行序列跨函数实现跳转呵呵!这就是goto语句所不能实现的。也正因为如此,所以才说在C语言中,setjmp与longjmp相结合的方式,它提供了真正意义上的异常处理机制。其实上一篇文章中的那个例程,已经演示了longjmp函数的非本地跳转的场景。这里为了更清晰演示本地跳转与非本地跳
2012-08-30 14:51:29 842
转载 errno.h头文件介绍
查看错误代码errno是调试程序的一个重要方法。当linux C api函数发生异常时,一般会将errno变量(需include errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较 麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。以下来自linux
2012-08-30 10:21:28 1538
转载 C&C++标准库
1.什么是C&C++的标准库?C语言被发明出来时并没有什么库函数,随着C语言的流行,越来越多的厂商或者机构组织开始提供C的编译器,并且同时把经常用到的函数封装成“库”的形式发布;不同的组织发布的库函数的接口和数量各不相同。后来,标准化组织ANSI制定了C语言的标准,同时也制定了一定数量的库(或库函数),就就成为标准库函数。(后来这个ANSI C标准上升为ISO标准,但是内容并没有变化!谁让美国
2012-08-29 16:54:41 4624
原创 arm-linux-gcc-4.3.2.tgz 安装配置步骤
安装交叉编译工具链:下载 arm-linux-gcc-4.3.2.tgz 可以到这里(下载两部分一起解压)arm-linux-gcc-4.3.2.tgz.part1.rararm-linux-gcc-4.3.2.tgz.part2.rar 安装arm-linux-gcc-4.3.2: 1、首先以root用户登入 2、复制arm-linux-gcc-4.3.2.tgz
2012-08-29 13:26:01 4895
转载 Linux 下串口编程入门
串口简介串行口是计算机一种常用的接口,具有连接线少,通讯简单,得到广泛的使用。常用的串口是 RS-232-C 接口(又称 EIA RS-232-C)它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是"数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准"该标准规定采用一个 2
2012-08-23 15:41:31 821
转载 Linux下串口编程
老板让我研究一下UPS的控制,貌似在Linux下面没有相应的监控软件,UPS和电脑通信时候使用的是串口(RS232),所以先对Linux串口编程了解一下。因为只是设计串口传输数据,而不需要串口来处理,那么使用原始模式(Raw Mode)方式来通讯。串口操作需要的头文件:? Opt.c_cflag |= CS8;
2012-08-23 15:19:54 1398
转载 POSIX操作系统的串口编程指南(2) 分类: Linux串口编程
第二章:配置串口这一章介绍怎样使用C语言的POSIX终端接口配置串口。 POSIX终端接口多数系统支持使用POSIX终端接口改变波特率、字符数等参数。首先要包含头文件;这样就定义了终端控制结构和POSIX控制函数。两个最重要的POSIX函数是tcgetattr(3)和tcsetattr(3),用了获取和设置终端属性。你可以设置一个指向term
2012-08-22 10:12:56 995
转载 POSIX操作系统的串口编程指南(1)
5th EditionMichael R. SweetCopyright 1994-1999, All Rights Reserved 原文:http://digilander.libero.it/robang/rubrica/serial.htm 第一次翻译文档,不当之处请指正。 引言《POSIX操作系统的串口编程指南》将
2012-08-22 10:06:38 1868
转载 串口通信的基本概念
1,什么是串口? 2,什么是RS-232? 3,什么是RS-422? 4,什么是RS-485? 5,什么是握手? 1,什么是串口? 串口是计算机上一种非常通用设备通信的协议(不要与通用串行总线Universal Serial Bus或者USB混淆)。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232
2012-08-22 09:53:38 1732
原创 在线视频教程
成都国嵌专业嵌入式Linux视http://www.xuexi114.com.cn/neirong/cfe9fda9E4C2093E.html 高 linux ARM10TX2440视频教程http://www.youku.com/playlist_show/id_17265450_ascending_1_mode_pic_page_2.html 汇编微机原理及汇编语言
2012-08-21 22:35:24 1641
原创 专家博客记录
记录在网上看到的专家博客,以备学习分类一:linuxhttp://blog.csdn.net/flowingflying arm linux kernel adorid http://www.enjoylinux.cn/index.asp 国嵌官网分类二:C/C++分类三:Java分类三:Qth
2012-08-17 11:13:07 886
转载 linux信号 linux signal
Linux Signal (1): 基本概念 1. 信号是软件中断:信号提供了一种处理异步事件的方法. 每个信号都有一个名字, 他们以SIG开头, 如SIGALRM是闹钟信号, 当由alarm函数设置的计时器超时后产生此信号, 然后由SIGALRM的信号处理函数接管处理, 处理之后返回调用alarm函数的应用程序中.2. 信号编号:在头文件中, 信号都用宏定
2012-08-17 10:27:37 2155
转载 Posix多线程编程(6)—共享内存
一、什么是共享内存区 共享内存区是最快的可用IPC形式。它允许多个不相关的进程去访问同一部分逻辑内存。如果需要在两个运行中的进程之间传输数据,共享内存将是一种效率极高的解决方案。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据的传输就不再涉及内核。这样就可以减少系统调用时间,提高程序效率。 共享内存是由IPC为一个进程创建的一个特殊的地址范围,它将出现在进程的地址空间中。其他进
2012-08-17 10:19:24 745
转载 Posix多线程编程(5)—条件变量
一、什么是条件变量 与互斥锁不同,条件变量是用来等待而不是用来上锁的。条件变量用来自动阻塞一个线程,直到某特殊情况发生为止。通常条件变量和互斥锁同时使用。 条件变量使我们可以睡眠等待某种条件出现。条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。 条件的检测是在互斥锁的保护下进
2012-08-17 10:18:26 956 1
转载 Posix多线程编程(4)—互斥量(锁)
一、什么是互斥锁 另一种在多线程程序中同步访问手段是使用互斥量。程序员给某个对象加上一把“锁”,每次只允许一个线程去访问它。如果想对代码关键部分的访问进行控制,你必须在进入这段代码之前锁定一把互斥量,在完成操作之后再打开它。 互斥量函数有 pthread_mutex_init 初始化一个互斥量 pthread_mutex_lo
2012-08-17 10:18:06 677
转载 Posix多线程编程(3)—信号灯(量)
有名信号灯和基于内存的信号灯信号灯---限制进程或线程访问共享资源的个数一、Posix有名信号灯 函数sem_open创建一个新的有名信号灯或打开一个已存在的有名信号灯。有名信号灯总是既可用于线程间的同步,又可以用于进程间的同步。 但是基于内存的信号灯,用于线程间同步比较方便,用于进程间通信就会出现一定的问题。1.posix有名信号灯函数 函数1. 名称:: sem_o
2012-08-17 10:17:20 613
转载 Posix多线程编程(2)—线程属性
一.线程属性 线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化。我们用pthread_attr_init函数对其初始化,用pthread_attr_destroy对其去除初始化。 函数1. 名称:: pthread_attr_init/pthread_attr_destroy 功能: 对线程属性初始化/去除初始化
2012-08-17 10:16:44 417
转载 Posix多线程编程(1)—线程基础
一.什么是线程 在一个程序里的多个执行路线就叫做线程。更准确的定义是:线程是“一个进程内部的一个控制序列”。 典型的unix进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情。有了多个控制线程以后,在程序设计时可以把进程设计成在同一时刻能够做不止一件事,每个线程处理各自独立的任务。 二.线程的优点 (1)通过为每种事件类型的处理分配单独的线程,能够简化处
2012-08-17 10:15:26 710
转载 深入理解linux互斥锁(mutex)
锁机制,可以说是linux整个系统的精髓所在,linux内核都是围绕着同步在运转。在多进程和多线程编程中,锁起着极其重要的作用。我这里说的是互斥锁,其实是泛指linux中所有的锁机制。我在这里不讲如果创建锁,关于锁的创建,网上代码很多,我在这里就不多说了。我要谈一谈一个让所有刚刚接触锁机制的程序员都很困惑的问题:如何使用以及锁机制在程序中是如何运作的。 为什么要使用锁
2012-08-17 10:11:27 773
转载 裸机开发经验
首先说明,我没啥经验。只是说一下我的体会。也没有朝谁开火的意思。如果无意伤了谁,还望海涵;如果所言有误,还请高手多多指教。好了,开始忽悠~~~~~~~~~~~~~~~~在论坛里见到好多朋友学习裸机的时候都有一个习惯——做裸机开发时,过度依赖天嵌的裸机测试程序。怎么说呢,我觉得这样不是很好。尤其是对于一个新手。 也许是学习单片机出身的原因,我有一个毛病,就是对别人的代码不放心
2012-08-17 08:51:35 1243
转载 emacs 复制和剪切一行
在编码的过程中,经常需要复制和剪切一整行代码,如果用emacs本来的快捷键,复制一行的话,需要C-a C-@ C-e M-w 4步操作才能完成,比较麻烦。于是,我改造了一下emacs的M-w和C-w快捷键,当没有区域被选中的时候,就复制或剪切一整行。代码如下:;; copy region or whole line(global-set-key "\M-w"(lambd
2012-08-17 07:37:33 12801 1
转载 Linux操作系统下的多线程编程详细解析
zieckey (zieckey@yahoo.com.cn) 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括L
2012-08-16 16:55:20 1395
转载 GDB 调试程序
说明:以下内容根据【1】中所讲述进行整理转载,所有权归原作者。【2】中对【1】中所提及的命令进行了总结。一、GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。一般来说,GDB主要帮忙你完成下面四个方面的功能:1、自定义的要求随心所欲的运行程序。2、设置断点(断点可以是条件表达式)。3、在断点处输出当前变量信息。4、动态的改变程序的执行环境
2012-08-16 16:26:40 1039
转载 7、取消点的进一步讨论
线程取消的方法是向目标线程发Cancel信号,但如何处理Cancel信号则由目标线程自己决定,或者忽略、或者立即终止、或者继续运行至Cancelation-point(取消点),由不同的Cancelation状态决定。线程接收到CANCEL信号的缺省处理(即pthread_create()创建线程的缺省状态)是继续运行至取消点,也就是说设置一个CANCELED状态,线程继续运行,只有运行至Ca
2012-08-16 16:14:33 937
转载 6、一个 pthread_cancel 引起的线程死锁【整理转载】
说明:本文由【2,3】整理而得。这篇文章主要从一个 Linux 下一个pthread_cancel函数引起的多线程死锁小例子出发来说明Linux系统对 POSIX线程取消点的实现方式,以及如何避免因此产生的线程死锁。目 录:1. 一个 pthread_cancel 引起的线程死锁小例子2. 取消点(Cancellation Point)3. 取消类型(Cancell
2012-08-16 16:13:05 825
转载 5、线程终止方式:pthread_cleanup_push/pthread_cleanup_pop()
以下内容根据【1】进行整理。关于取消点,将在后面进一步讨论。1、一般来说,Posix的线程终止有两种情况:正常终止和非正常终止。线程主动调用pthread_exit()或者从线程函数中return都将使线程正常退出,这是可预见的退出方式;非正常终止是线程在其他线程的干预下,或者由于自身运行出错(比如访问非法地址)而退出,这种退出方式是不可预见的。2、线程终止时的清理 不论是可预见
2012-08-16 16:12:00 567
转载 4、Linux多线程,线程同步(2)
2)条件变量(cond) 利用线程间共享的全局变量进行同步的一种机制。条件变量上的基本操作有:触发条件(当条件变为true 时);等待条件,挂起线程直到其他线程触发条件。int pthread_cond_init(pthread_cond_t *cond,pthread_condattr_t *cond_attr); int pthread_cond_wait(pth
2012-08-16 16:11:40 811
转载 3、Linux多线程,线程同步
5)线程私有数据 进程内的所有线程共享进程的数据空间,因此全局变量为所有线程所共有。但有时线程也需要保存自己的私有数据,这时可以创建线程私有数据(Thread-specific Date)TSD来解决。在线程内部,私有数据可以被各个函数访问,但对其他线程是屏蔽的。例如我们常见的变量errno,它返回标准的出错信息。它显然不能是一个局部变量,几乎每个函数都应该可以调用它;但它又不能是一个全
2012-08-16 16:09:55 555
转载 2、Linux多线程,线程的分离与结合
(2)线程的分离与结合 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用了
2012-08-16 16:09:39 556
转载 1、Linux多线程,基本概念
说明:以下内容,根据参考中【1~6】内容整理而得。一、基本概念1、线程是计算机中独立运行的最小单位。进程是分配资源的单位。2、为什么使用多线程?(1)启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远
2012-08-16 16:09:13 717
转载 C++ Boost库简介
boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。 boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数
2012-08-16 08:43:27 1044
转载 Qt配置vs2005的方法
1.正常安装Visual Studio 2005,只要安装了C++即可.注意:不是Express版本.2.下载Qt源代码Qt 4.3.2 Windows OpenSource版下载:http://www.qtcn.org/download/qt-win-opensource-src-4.3.2.zipftp://ftp.trolltech.com/qt/source/qt-
2012-08-15 16:49:22 649
转载 嵌入式人才的发展方向!
嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的 硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到 的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set
2012-08-15 08:23:07 2925
转载 嵌入式学习指南
近些年来,嵌入式系统的发展在国内可谓如火如荼,很多公司都急需嵌入式系统方面的开发人员。然而,在高校中,嵌入式系统的教学却较为滞后,很多高年级的本科生和刚入学的研究生都苦于不知从何学起。在本文中,笔者将根据自己的嵌入式系统开发和教学经验,简要介绍嵌入式系统的学习方法,力求能帮助初学者找到一条入门之路。什么是嵌入式系统? 学习嵌入式系统,首先应该明确什么是嵌入式系统,否则费力去学,却不
2012-08-15 08:16:43 2168
转载 C++进阶 必读书籍
(一)语言入门:《C++ Primer》最新版本:第三版(第四版国外已上架, 国内一些网上书店也在预订中)适合有丰富C经验,缺乏C++经验的。不过我个人一直认为此书带着过于强烈的C语言的痕迹,对于C++的学习未必是 好事。《The C++ Programming Language》/《C++程序设计语言》最新版本:第三版特别版简称 TC++PL,有其他语言的丰富经验
2012-08-15 07:42:25 25587 1
转载 分析各家2440开发板的性价比(初学者如何选择开发板)
作者:gooogleman 邮箱:gooogleman@foxmail.com地址:http://blog.csdn.net/gooogleman/article/details/4544046 我曾经在大学买过两个ARM9,经历了纠结的入门过程 http://blog.csdn.net/gooogleman/archive/2010/05/23/5617981.as
2012-08-14 20:52:00 3199
业务逻辑实现 QT WebSocket + QWebChannel 实现 C/C++ 与 javascript通信
2022-07-18
electron + vue + vite + qwebchannel 实现C++与JS通信
2022-07-18
教材管理系统+VB+Acess + 源码 + PPT
2022-02-15
shell命令解析器项目
2013-02-05
[c源码]shell命令解析器项目
2013-02-05
注册表Hive文件编程资料
2010-04-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人