随笔分类 -  C/C++

函数调用方式介绍
摘要:我们知道在进行函数调用时,有几种调用方法,主要分为C式,Pascal式.在C和C++中C式调用是缺省的,类的成员函数缺省调用为_stdcall。二者是有区别的,下面我们用实例说明一下:(还有thiscall和fastcall)1. __cdecl :C和C++缺省调用方式 C 调用约定(即用__cdecl 关键字说明)按从右至左的顺序压参数入栈,由调用者把参数弹出栈。对于传送参数的内存栈是由调... 阅读全文
posted @ 2005-12-21 16:30 safeking 阅读(3594) 评论(0) 推荐(0)
RTOS中优先级反转问题
摘要:1 问题的提出 目前,市场上占有率比较高的商业RTOS有VxWorks/PSOS、QNX、 LynxOS、VRTX,、Windows CE等。这些为数众多的RTOS绝大多数都是多任务实时微内核的结构,采用的是基于优先级的可抢占式调度策略。系统为每一个任务分配一个优先权,调度程序保证当前运行的进程是优先权最高的进程。但是,有时候会出现一种比较奇怪的现象:由于多进程共享资源,具有最高优先权的进程被... 阅读全文
posted @ 2005-12-21 15:46 safeking 阅读(1030) 评论(0) 推荐(0)
C语言的底层操作
摘要:概述 C语言的内存模型基本上对应了现在von Neumann(冯·诺伊曼)计算机的实际存储模型,很好的达到了对机器的映射,这是C/C++适合做底层开发的主要原因,另外,C语言适合做底层开发还有另外一个原因,那就是C语言对底层操作做了很多的的支持,提供了很多比较底层的功能。 下面结合问题分别进行阐述。 问题:移位操作 在运用移位操作符时,有两个问题必须要清楚: (1)、在右移操作中,腾空位... 阅读全文
posted @ 2005-12-21 14:14 safeking 阅读(554) 评论(0) 推荐(0)
使用可重入函数进行更安全的信号处理
摘要:如果要对函数进行并发访问,不管是通过线程还是通过进程,您都可能会遇到函数不可重入所导致的问题。在本文中,通过示例代码了解如果可重入性不能得到保证会产生何种异常,尤其要注意信号。引入了五条可取的编程经验,并对提出的编译器模型进行了讨论,在这个模型中,可重入性由编译器前端处理。 在早期的编程中,不可重入性对程序员并不构成威胁;函数不会有并发访问,也没有中断。在很多较老的 C 语言实现中,函数被认... 阅读全文
posted @ 2005-12-20 15:23 safeking 阅读(511) 评论(0) 推荐(0)
C语言之声明的语法
摘要:概述 在很多情况下,尤其是读别人所写代码的时候,对C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。 问题:声明与函数 有一段程序存储在起始地址为0的一段内存上,如果我们想要调用这段程序,请问该如何去做? 答案 答案是(*(void (*)( ) )0)( )。看起来确实令人头大,那好... 阅读全文
posted @ 2005-12-20 12:57 safeking 阅读(324) 评论(0) 推荐(0)
C语言之内存使用
摘要:问题:内存使用 有人写了一个将整数转换为字符串的函数: char *itoa (int n){ char retbuf[20]; sprintf(retbuf, "%d", n); return retbuf;} 如果我调用这个函数:char *str5 = itoa(5),str5会是什么结果呢? 答案分析: 答案是不确定,可以确定的是肯定不是我们想要的 “5”。 retbuf... 阅读全文
posted @ 2005-12-20 12:43 safeking 阅读(456) 评论(0) 推荐(0)
C语言之编译器引出的问题
摘要:基本解释 本节主要探讨C编译器下面两方面的特点所引发的一系列常见的编程问题。 对C文件进行分别编译:C程序通常由几个小程序(.c文件)组成,编译器将这几个小程序分别编译,然后通过链接程序将它们组合在一起形成一个目标代码。由于编译器每次只能编译一个文件,因此它不能立即检查需要几个源文件配合才能发现的错误。 对函数的参数和返回值建立临时变量C编译器会对函数的参数建立临时参数,也可能会对函数的返... 阅读全文
posted @ 2005-12-20 12:43 safeking 阅读(363) 评论(0) 推荐(0)
C语言之指针、数组和函数
摘要:本解释 1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。 2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。 3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。 问题:指针与数组 听说c... 阅读全文
posted @ 2005-12-20 12:42 safeking 阅读(381) 评论(0) 推荐(1)
C语言之指针步进辨析
摘要:基本解释 通过上一篇的分析,我们已经很清楚地知道:指针不是一个简单的类型,它是一个本身和所指向物相复合的类型。指针的算术运算(如步进)与指针所指向物的类型密切相关。 问题:指针步进 & 步进单位 下面的代码中打印出的结果是几? int arContext[5] ={0,1,2,3,4}, i, *pAr;pAr = arContext;printf ("%d\n", *(pA... 阅读全文
posted @ 2005-12-20 12:41 safeking 阅读(1037) 评论(0) 推荐(0)
C语言之指针综合谈
摘要:述 Joel Spolsky认为,对指针的理解是一种aptitude,不是通过训练就可以达到的。虽然如此,我还是想谈一谈这个C/C++语言中最强劲也是最容易出错的要素。 鉴于指针和目前计算机内存结构的关联,很多C语言比较本质的特点都孕育在其中,因此,本篇和第六、第七两篇我都将以指针为主线,结合在实际编程中遇到的问题,来详细谈谈关于指针的几个重要方面。 指针类型的本质分析 1、指针的本质 ... 阅读全文
posted @ 2005-12-20 12:40 safeking 阅读(258) 评论(0) 推荐(0)
some C++ notes
摘要:一、#i nclude "filename.h"和#i nclude 的区别#i nclude "filename.h"是指编译器将从当前工作目录上开始查找此文件#i nclude 是指编译器将从标准库目录中开始查找此文件二、头文件的作用加强安全检测通过头文件可能方便地调用库功能,而不必关心其实现方式三、* , &修饰符的位置对于*和&修饰符,为了避免误解,最好将修饰符紧靠变量名四、if语句不要将... 阅读全文
posted @ 2005-12-20 12:39 safeking 阅读(282) 评论(0) 推荐(0)
关于拷贝构造函数和赋值运算符
摘要:关于拷贝构造函数和赋值运算符作者:冯明德 重点:包含动态分配成员的类 应提供拷贝构造函数,并重载"="赋值操作符。 以下讨论中将用到的例子: class CExample { public: CExample(){pBuffer=NULL; nSize=0;} ~CExample(){delete pBuffer;} void Init(int n){ pBuffer=new char[... 阅读全文
posted @ 2005-12-20 11:44 safeking 阅读(310) 评论(0) 推荐(0)
C++中的构造函数设计
摘要:在C++中,构造函数是一个在构件对象的时候调用的特殊的函数,其目的是对对象进行初始化的工作,从而使对象被使用之前可以处于一种合理的状态。但是,构造函数的设计并不完美,甚至有些不合理的特性。比如说,限定构造函数名称与类的名称相同的条件。这些特性在构造C++编译器的时候是值得引起注意的。还有,在今后C++的标准修订或者制定其他面向对象的设计语言时候应当避免这些特性。这里也提出了一些解决的方案。 ... 阅读全文
posted @ 2005-12-20 11:42 safeking 阅读(607) 评论(0) 推荐(0)
堆(heap)和栈(stack) 深层认识
摘要:堆(heap)和栈(stack)是C/C++编程不可避免会碰到的两个基本概念。首先,这两个概念都可以在讲数据 结构的书中找到,他们都是基本的数据结构,虽然栈更为简单一些。 在具体的C/C++编程框架中,这两个概念并不是并行的。对底层机器代码的研究可以揭示,栈是机器系 统提供的数据结构,而堆则是C/C++函数库提供的。 具体地说,现代计算机(串行执行机制),都直接在代码底层支持栈的数据结构。这体现在... 阅读全文
posted @ 2005-09-16 10:28 safeking 阅读(1025) 评论(2) 推荐(0)
C++ 程序设计语言编程风格
摘要:C++ 程序设计语言编程风格演变史 阅读全文
posted @ 2005-08-31 13:49 safeking 阅读(1255) 评论(2) 推荐(0)
一些内存使用问题(c语言)
摘要:内存使用 阅读全文
posted @ 2005-08-31 13:34 safeking 阅读(606) 评论(0) 推荐(0)
高质量C++/C编程指南 - 第11章 其它编程经验 参考文献
摘要:高质量C++/C编程指南 - 第11章 其它编程经验 参考文献 阅读全文
posted @ 2005-08-31 11:56 safeking 阅读(923) 评论(0) 推荐(0)
高质量C++/C编程指南 - 第10章 类的继承与组合
摘要:高质量C++/C编程指南 - 第10章 类的继承与组合 阅读全文
posted @ 2005-08-31 11:55 safeking 阅读(503) 评论(0) 推荐(0)
高质量C++/C编程指南 - 第9章 类的构造函数、析构函数与赋值函数
摘要:高质量C++/C编程指南 - 第9章 类的构造函数、析构函数与赋值函数 阅读全文
posted @ 2005-08-31 11:52 safeking 阅读(588) 评论(0) 推荐(0)
高质量C++/C编程指南 - 第8章 C++函数的高级特性
摘要:高质量C++/C编程指南 - 第8章 C++函数的高级特性 阅读全文
posted @ 2005-08-31 11:47 safeking 阅读(629) 评论(0) 推荐(0)