基础知识
文章平均质量分 56
chenchong_219
这个作者很懒,什么都没留下…
展开
-
h头文件 .lib库文件 .dll动态链接库文件关系
1、.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的。2、若生成了DLL,则肯定也生成 LIB文件。lib文件是必须在编译期就连接到应用程序中的,而dll文件是运行期才会被调用的。3、如果要完成源代码的编译和链接,有头文件和lib就够了。如果也使动态连接的程序运行起来,有dll就够了。4、LIB文件的作用:告诉链接器调用的函数在哪个DLL中,函数执行代码在DLL原创 2013-04-06 20:51:38 · 533 阅读 · 0 评论 -
C语言函数库——stdlib.h
1、abs功能:求绝对值2、atof功 能: 把字符串转换成浮点数例子:#include #include int main(){ float f; char *str = "12345.67"; f = atof(str); printf("string = %s float = %f\n", str, f);原创 2013-05-07 23:25:17 · 1757 阅读 · 0 评论 -
C++基本类型所占位数和取值范围
C++基本类型所占位数和取值范围:符号属性 长度属性 基本型 所占位数 取值范围 输入符举例 输出符举例-- -- char 8 -2^7 ~ 2^7-1 %c %c、%d、%u原创 2013-05-09 23:15:37 · 560 阅读 · 0 评论 -
C语言——可变长参数
1、头文件 stdarg.h2、例子:求最大数/* bsearch example */#include /* printf */#include int maxn(size_t count,...){int n,big;va_list numbers;va_start(numbers,count);big = va_arg(numbers,原创 2013-05-10 22:43:10 · 602 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy和memcpy的区别strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需原创 2013-05-10 20:47:27 · 438 阅读 · 0 评论 -
typedef 函数指针
1、typedef的理解 typedef int* p :在一个声明中,如果有存储类说明符typedef的修饰,标示符p将被定义为了一个typedef name,这个typedef name表示一个类型,这个类型就是int* p这个声明中表示的p的类型。2、typedef定义函数指针 typedef int(*PFunc)(int); 例子:转载 2013-05-25 23:25:04 · 725 阅读 · 0 评论 -
VS调试dll
客户端:1、debug下编译,将dll和对于的pdb放在同运行的exe同一个目录下。2、在dll中设置option->debuging->command为exe的目录。workingdiretroy为pdb的目录。3、右击->debug->start new instance.设置符号:1、tools ->options ->dubuging ->symblos设置符号原创 2013-06-16 20:06:44 · 748 阅读 · 0 评论 -
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显转载 2013-12-05 23:29:35 · 530 阅读 · 0 评论 -
字符编码
1、ASCII:美国信息交换标准码 (ASCII),标准的单字节字符编码方案,用于基于文本的数据。由于ASCII字节的七个位,最高位并不使用,所以后来又将最高的一个位也编入这套内码中,成为八个位的延伸ASCII (ExtendedASCII)码,这套内码加上了许多外文和表格等特殊符号,成为目前常用的内码。2、MBCS:多字节字符集,字符串有1个或者2个直接宽。strlen得到的转载 2014-01-01 16:18:51 · 934 阅读 · 0 评论 -
进程虚拟地址空间
在windows操作系统中,每个进程都有自己的私有地址空间,因此一个进程的线程只能访问属于这个进程的内存空间,即进程之间是地址隔离的。在windows2000中,进程虚拟地址空间可分为如下四个部分:1)NULL 区 (0x00000000~0x0000FFFF): 如果进程中的一个线程试图操作这个分区中的数据,CPU就会引发非法访问。他的作用是,调用malloc等内存分配函数时,如果无法找到足转载 2014-03-09 22:13:19 · 1578 阅读 · 0 评论 -
函数指针
第一个例子说明指向函数的指针如何说明、赋值、调用。 #include #define TESTDATE 100 int func(int a) /* func用于打印一个整数 */ { return printf("%d\n",a); } main() { int (*FunctionPionter)(int a);转载 2014-03-19 22:58:38 · 665 阅读 · 0 评论 -
App init dlls注册表路径
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs]原创 2014-04-07 16:12:35 · 977 阅读 · 0 评论 -
用例子详细介绍各种字符集编码转换问题
---本文背景:本人在编程时需要匹配字符串,由此想到了如果文件是各种字符编码的话,匹配结果有可能不正确,那么,如何判断不同的字符集?如何在不同字符集之间做转换?对于UNICODE编码逐渐通用的情况下,我们软件人员如何从容应对? 本文首先对常用字符集进行总结,然后在字符集的显示及转换上以实例介绍,最后总结了编程中遇到的编码问题。本文目的:对字符集编码做详细介绍,关键配以实例讲转载 2014-05-17 21:25:52 · 723 阅读 · 0 评论 -
一个简单的变长内存池
#define NODE_SIZE (200) //每个node的大小#define BASE_NODE_NUM (1024 * 1) //初始分配大小#define STEP_NODE_NUM (1024 * 1) //每次递增大小#include #pragma pack(1)typedef struct _mem_node {原创 2014-06-02 19:24:04 · 1766 阅读 · 0 评论 -
C语言库函数——ctype.h
1、isalnum 功能:判断字符变量c是否为字母或数字说明:当c为数字0-9或字母a-z及A-Z时,返回非零值,否则返回零。Example:#include #include int main (){ int i; char str[]="c3po..."; i=0; while (isalnum(str[i])) { i原创 2013-05-05 23:06:14 · 1239 阅读 · 0 评论 -
C语言库函数——之一
1、库函数:顾名思义是把函数放到库里,是别人把一些常用到的函数编完放到一个文件里,供编程人使用。2、一般是指编译器提供的可在c源程序中调用的函数。3、C语言编译系统应提供的函数库目前尚无国际标准。不同版本的C语言具有不同的库函数,用户使用时应查阅有关版本的C的库函数参考手册。4、标准C库由15个头文件中声明的函数,类型定义和宏组成。 第一组ctype.h 字符处理原创 2013-05-05 22:57:03 · 526 阅读 · 0 评论 -
函数模板的声明和使用
函数模板的声明和使用1. 函数模板的声明template(参数表){ 函数体}2. 使用2.1templateT Add(T a, T b){ T c = a + b; return c;}int a, b;Add(a, b);// 上面的T经过编译器, 就编程int了(有一点像C中的宏).转载 2013-04-09 23:13:26 · 1149 阅读 · 0 评论 -
VS2008 DLL
1、动态连接和静态连接的区别。1、隐式链接就是在程序开始执行时就将DLL文件加载到应用程序当中。隐式链接必须的文件:lib .2、显式链接是应用程序在执行过程中随时可以加载DLL文件,也可以随时卸载DLL文件,这是隐式链接所无法作到的,所以显式链接具有更好的灵活性,对于解释性语言更为合适。不过实现显式链接要麻烦一些。在应用程序中用LoadLibrary或MFC提供的AfxLoadL转载 2013-04-12 22:55:39 · 525 阅读 · 0 评论 -
VS2010 断点调试
VS2010中的调试技巧 断点今天的博文将介绍Visual Studio中的一些实用调试技巧。这是受我朋友Scott Cate (他发表过几十篇很棒的VS技术文章) 启发。他最近告诉我,许多Visual Studio下的程序员,甚至一些很有经验的开发人员,都不知道这些技巧。希望这篇文章能帮你掌握这些技巧。它们都很简单,却能帮你节约大量的时间。跳到当前光标处(Ctrl+F10转载 2013-04-12 23:32:58 · 858 阅读 · 0 评论 -
11个高效的VS调试技巧
11个高效的VS调试技巧介绍调试是软件开发周期中的一个很重要的部分,有时很有挑战性,有时候则让程序员迷惑,有时候让程序员发疯,但是。可以肯定的是,对于任何不是太那个微不足道的程序来说,调试是不可避免的。近年来,调试工具的发展已经使得很多调试任务简单省时了。 本文总结了十个调试技巧,当你使用VS的时候可以节省你很多时间。1.悬停鼠标查看表达式调试有时候很有转载 2013-04-12 23:48:44 · 716 阅读 · 0 评论 -
dll动态调用和静态调用有什么区别
2010-06-14 22:1一).静态调用其步骤如下:1.把你的youApp.DLL拷到你目标工程(需调用youApp.DLL的工程)的Debug目录下;2.把你的youApp.lib拷到你目标工程(需调用youApp.DLL的工程)目录下;3.把你的youApp.h(包含输出函数的定义)拷到你目标工程(需调用youApp.DLL的工程)目录下;4.打开你的目标工转载 2013-04-12 22:58:38 · 1843 阅读 · 0 评论 -
DLL断点调式
在VS2010 C++中调试DLL工程的方法 1、在“Solution Explorer”中找到要调试的dll项目,点击右键,选择Set as StartUp Project,将dll设置为调试启动项目;然后选择dll项目,点击右键,选择Properties,打开属性页设置页面;2、在Properties 页面的中,选择Configuration Properties转载 2013-04-12 23:31:25 · 1197 阅读 · 0 评论 -
C++中建立对象间消息连接的一种系统方法——回调函数
C++中建立对象间消息连接的一种系统方法——回调函数用过C++进行过面向对象程序设计的用户都知道,程序中的对象很少单独存在。不考虑对象间的相互作用几乎是不可能的。所以,标识对象间的关系或建立对象间的消息连接是面向对象程序设计的一项重要任务。本文着重从C++程序设计的角度,提出一种建立对象间消息连接的实用方法。如果你想详细了解面向对象程序设计技术,请参阅有关专著。大家都知道对转载 2013-04-24 23:14:53 · 589 阅读 · 0 评论 -
C语言位运算详解
C语言位运算详解作者:911说明:本文参考了http://www2.tsu.edu.cn/www/cjc/online/cyuyan/,算是对其的修正,在此将本文列为原创,实有抄袭之嫌疑。甚是惭愧!位运算是指按二进制进行的运算。在系统软件中,常常需要处理二进制位的问题。C语言提供了6个位操作运算符。这些运算符只能用于整型操作数,即只能用于带符号或无符号的ch转载 2013-04-21 20:45:03 · 535 阅读 · 0 评论 -
dll的导出和导入的一个小技巧
dll的导出和导入的一个小技巧(让dll的代码文件和调用者代码文件共享一个头文件)大家都知道导出成员用_declspec(dllexport),导入用_declspec(dllimport),可以在头文件的声明部分使用这两个修饰符对函数,类,变量,或类成员函数进行修饰,来表示该成员是一个导入成员或导出成员。有一个小技巧,就是使用宏定义作为开关控制,让dll项目和调用dll的项目公用转载 2013-05-02 23:46:26 · 813 阅读 · 0 评论 -
stdafx.h
1、所谓头文件预编译,就是把一个工程(Project)中使用的一些MFC标准头文件(如Windows.H、Afxwin.H)预先编译,以后该工程编译时,不再编译这部分头文件,仅仅使用预编译的结果。这样可以加快编译速度,节省时间。2、所有的MFC实现文件第一条语句都是:#include "stdafx.h"。在它前面的所有代码将被忽略,所以其他的头文件应该在这一行后面被包含。你编写的任何.c原创 2013-05-02 23:51:28 · 593 阅读 · 0 评论 -
C++库函数查询网址
http://www.cplusplus.com/原创 2013-05-03 22:09:06 · 1873 阅读 · 0 评论 -
预定义的符号常量? _LINE_ _FILE_ _DATE_ _TIME_
printf("%d %s %s %s" , __LINE__, __FILE__, __DATE__, __TIME__ );注意是两个下划线原创 2013-05-05 22:05:59 · 1049 阅读 · 0 评论 -
C++中获得当前系统时间
// 方案— 优点:仅使用C标准库;缺点:只能精确到秒级#include #include int main( void ) { time_t t = time( 0 ); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) )转载 2013-05-05 22:08:26 · 523 阅读 · 0 评论 -
获取系统时间(精确到微秒),驱动中KeQueryPerformanceCounter,Win32程序QueryPerformanceCounter
获取系统时间(精确到微秒),驱动中KeQueryPerformanceCounter,Win32程序QueryPerformanceCounter1.在驱动中获取us级的时间间隔今天在做驱动开发时,需要操作时间,而且还要精确到us,而GetTickCount()函数只能精确到ms,所以就用到下面的函数:LARGE_INTEGER KeQueryPerformanceC转载 2014-05-28 22:55:44 · 6376 阅读 · 0 评论