随笔分类 -  C/C++

c的预处理
摘要:c编译系统在对程序进行通常的编译之前,先进行预处理。c提供的预处理功能主要有以下三种:1)宏定义 2)文件包含 3)条件编译 1. 宏定义 不带参数的宏定义 用一个指定的标识符来代表一个字符串,形式:#define 标识符 字符串 几点说明: 1) 宏名一般用大写 2) 宏定义不作语法检查,只有在编译被宏展开后的源程序时才会报错 3) 宏定义不是c语句,不在行末加分号 4) 宏名有效范围为定义到本... 阅读全文
posted @ 2007-04-18 10:14 safeking 阅读(420) 评论(0) 推荐(0)
内联函数与宏
摘要:内联函数也称内嵌函数,它主要是解决程序的运行效率。 函数调用需要建立栈内存环境,进行参数传递,并产生程序执行转移,这些工作都需要一些时间开销。 C++中的内联函数定义很简单,只要在普通的函数前加一个关键字inline就可以了,除此之外和普通函数表面上没有什么区别(包括函数的调用方式),因为这样,所以在很多的C++初学者(甚至一些有C++编程经验的人) 看来,内联只是一个概念而已,其实... 阅读全文
posted @ 2007-04-18 10:12 safeking 阅读(978) 评论(0) 推荐(0)
宏使用方法要点
摘要:1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。 typedef unsigned char boolean; /* Boolean value type. */ typedef unsigned lo... 阅读全文
posted @ 2007-04-06 10:57 safeking 阅读(548) 评论(0) 推荐(0)
linux下c语言编程:文件操作
摘要:1。文件的创建和读写 我假设你已经知道了标准级的文件操作的各个函数(fopen,fread,fwrite等等).当然如果你不清楚的话也不要着急.我们讨论的系统级的文件操作实际上是为标准级文件操作服务的. 当我们需要打开一个文件进行读写操作的时候,我们可以使用系统调用函数open.使用完成以后我们调用另外一个close函数进行关闭操作. #include #include #inc... 阅读全文
posted @ 2007-03-19 10:25 safeking 阅读(727) 评论(0) 推荐(0)
变量的声明与定义以及关键字extern的用法
摘要:变量的声明与定义: A of a variable allocates storage for the variable and may also specify an initial value for the variable. There must be one and only one definition of a variable in a program. A declarati... 阅读全文
posted @ 2007-03-13 10:27 safeking 阅读(10796) 评论(2) 推荐(0)
Writing Reentrant and Thread-Safe Code
摘要:In single-threaded processes there is only one flow of control. The code executed by these processes thus need not to be reentrant or thread-safe. In multi-threaded programs, the same functions and ... 阅读全文
posted @ 2007-03-09 09:14 safeking 阅读(1206) 评论(0) 推荐(0)
C/C++编译的程序占用的内存分类
摘要:一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放... 阅读全文
posted @ 2007-03-08 09:49 safeking 阅读(708) 评论(0) 推荐(0)
深入探讨C++中的引用
摘要:引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解和使用引用起到抛砖引玉的作用。 一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引... 阅读全文
posted @ 2007-03-07 17:03 safeking 阅读(333) 评论(0) 推荐(0)
理解编译预处理
摘要:【标 题】:理解编译预处理【关键字】:【来 源】:http://www.cublog.cn/u/13991/showart.php?id=150533在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏(macro)"进行处理. C初学者可能对预处理器没什么概... 阅读全文
posted @ 2007-03-07 17:02 safeking 阅读(929) 评论(0) 推荐(0)
嵌入式C应注意的一些问题
摘要:1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更... 阅读全文
posted @ 2007-03-07 10:48 safeking 阅读(400) 评论(0) 推荐(0)
bigANDlittleEnd & memory
摘要:请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1 解答: int checkCPU( ) { { union w { int a; char b; } c; ... 阅读全文
posted @ 2007-03-07 10:16 safeking 阅读(347) 评论(0) 推荐(0)
great strcpy & strlen definition
摘要://为了实现链式操作,将目的地址返回char * strcpy( char *strDest, const char *strSrc ) // strSrc is input parameter and should not be changed{ assert( (strDest != NULL) && (strSrc != NULL) );// assert parameterchar *a... 阅读全文
posted @ 2007-03-06 16:18 safeking 阅读(270) 评论(0) 推荐(0)
结构体定义方式
摘要:1,struct tag { int a; char b; char *point;};access method :struct tag a;//a.bstruct tag *b;//a->b;2, struct tag { int a; char b; struct tag *self_point;// struct tag self_po... 阅读全文
posted @ 2007-03-06 10:59 safeking 阅读(507) 评论(1) 推荐(0)
使用 typedef 抑制劣质代码
摘要:摘要:Typedef 声明有助于创建平台无关类型,甚至能隐藏复杂和难以理解的语法。不管怎样,使用 typedef 能为代码带来意想不到的好处,通过本文你可以学习用 typedef 避免缺欠,从而使代码更健壮。 typedef 声明,简称 typedef,为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观,意指 typedef 能隐藏笨拙... 阅读全文
posted @ 2006-02-24 10:34 safeking 阅读(321) 评论(0) 推荐(0)
水滴石穿C语言之代码检查工具
摘要:概述 PC-Lint是一个历史悠久,功能异常强劲的静态代码检测工具。它的使用历史可以追溯到计算机编程的远古时代(30多年以前)。经过这么多年的发展,它不但能够监测出许多语法逻辑上的隐患,而且也能够有效地帮你提出许多程序在空间利用、运行效率上的改进点,在很多专业级的软件公司,比如Microsoft, PC-Lint检查无错误无警告是代码首先要过的第一关,我个人觉得,对于小公司和个人开发而言,PC-... 阅读全文
posted @ 2006-02-24 10:32 safeking 阅读(743) 评论(0) 推荐(1)
水滴石穿C语言之声明的语法
摘要:概述 在很多情况下,尤其是读别人所写代码的时候,对C语言声明的理解能力变得非常重要,而C语言本身的凝练简约也使得C语言的声明常常会令人感到非常困惑,因此,在这里我用一篇的内容来集中阐述一下这个问题。 问题:声明与函数 有一段程序存储在起始地址为0的一段内存上,如果我们想要调用这段程序,请问该如何去做? 答案 答案是(*(void (*)( ) )0)( )。看起来确实令人头大,那好... 阅读全文
posted @ 2006-02-24 09:11 safeking 阅读(268) 评论(0) 推荐(0)
C语言之可变参数问题
摘要:概述 C语言中有一种长度不确定的参数,形如:"…",它主要用在参数个数不确定的函数中,我们最容易想到的例子是printf函数。 原型: int printf( const char *format [, argument]... ); 使用例: printf("Enjoy yourself everyday!\n");printf("The value is %d!\n", valu... 阅读全文
posted @ 2006-02-23 14:24 safeking 阅读(456) 评论(0) 推荐(0)
关于const的使用方法【转载】
摘要:1、什么是const? 常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新 的。(当然,我们可以偷梁换柱进行更新:) 2、为什么引入const? const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点 。 3、cons有什么主要的作用? (1)可以定义const常量,具有不可变性。 例如: const int Max=1... 阅读全文
posted @ 2006-02-23 14:19 safeking 阅读(396) 评论(0) 推荐(0)
函数调用约定
摘要:在C语言中,假设我们有这样的一个函数: int function(int a,int b) 调用时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在CPU中,计算机没有办法知道一个函数调用需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数... 阅读全文
posted @ 2006-02-23 11:48 safeking 阅读(373) 评论(0) 推荐(0)
some note about dll
摘要:引言 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序 EXE 文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点... 阅读全文
posted @ 2005-12-21 16:37 safeking 阅读(256) 评论(0) 推荐(0)