C/C++
simonjay2007
这个作者很懒,什么都没留下…
展开
-
静态库、共享库、动态库的创建和使用
通常库分为:静态库,共享库,动态加载库,。下面分别介绍。一、 静态库:1.概念: 静态库就是一些目标文件的集合,以.a结尾。静态库在程序链接的时候使用,链接器会将程序中使用 到函数的代码从库文件中拷贝到应用程序中。一旦链接完成,在执行程序的时候就不需要原创 2011-10-13 16:05:56 · 764 阅读 · 0 评论 -
C99结构体指定初始化
毕业不是学习的终结,我感觉我的学习才刚刚开始。我与未来工作岗位的差距太大,我是好强的人,不甘人后。我不希望成为团队中的鸡肋或一个可有可无的人。我没有光鲜的文凭、扎实的技术,我能做的只有拼搏奋斗了。 以上这段话来自CSDN上一个博客http://blog.csdn.net/zhsxcn,看了日期,估计作者也是跟我一样今年毕业的,上面那句话也说到自己的心上,希望自己也能做好来~~原创 2012-05-14 09:28:20 · 1384 阅读 · 0 评论 -
vc6.0 下载
首先给大家推荐一个不错的工具集:http://www.tt365.org/tools/(里面有些工具很不错,可以把它的首页http://www.tt365.org/设为主页,界面非常清爽) 相关资料:要下载MSDN 2001,请进http://hi.baidu.com/ypxmaomao/blog/item/c1d129b5657794c937d3caf4.htmlMFC类原创 2011-07-24 18:52:45 · 5685 阅读 · 1 评论 -
C语言数组首地址和数组名取地址区别
申明:本文系原创,转载时请注明出处,本人保留追究责任的权利。原文地址:http://hi.baidu.com/surfmygod/blog/item/53d44914cdb8a5d6a7ef3f13.html本文适用于机器为32位,编译器为VC6.0。先来看下面一个例子:main(){int a[5]={0x11121314,0x21222324,0x3原创 2012-06-09 23:43:37 · 1252 阅读 · 0 评论 -
遇到关于strtok的一个问题,郁闷了好一会儿终于找到答案
今天用这个函数用的郁闷了好一会儿,就是因为字符串是用的test2指针形式,而没有用test1那样的数组形式!下面是我在网上看到的:int main() {char test1[] = "feng,ke,wei";char *test2 = "feng,ke,wei";char *p; p = strtok(test1, ",");while(原创 2012-07-26 00:20:03 · 1684 阅读 · 0 评论 -
结构体中的冒号:位域
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来原创 2012-08-21 14:33:45 · 992 阅读 · 0 评论 -
大端与小端存储方式
int main(){ unsigned char test[]={1,2}; printf("%d\n",*(short *)test); return 0;}打印结果为513int main(){ unsigned char test[]={2,1}; printf("%d\n",*(short *)原创 2012-08-30 01:44:16 · 1395 阅读 · 0 评论 -
linux下gethostbyname通过域名获取IP的例子
#include #include #include #include #include #include #include int main(int argc, char *argv[]){ int i; struct hostent *he; struct in_addr **addr_list; if (原创 2013-02-27 15:32:08 · 12432 阅读 · 0 评论 -
gdb 调试
gcc -o app test.c -ggdb3 (可以最大限度的包含调试信息)gdb ./app gdb 运行时设置命令行参数:(gdb) run 命令行参数 或者 (gdb) set args 命令行参数打印变量的值: p 变量 断点设置: b 行号 或者b 文件名:行号 或者 b function_name 以函数名设置断点转载 2014-02-19 18:04:58 · 776 阅读 · 0 评论 -
BCD与十进制转换的算法
BCD是指用二进制来表示十进制数的编码,即用4位二进制来表示一个十进制数,因此4位二进制数表示最大的十进制数9(1001),只取十六个数中的十个数(有别于8421码)。为了表示两个十进制数(十位、个位),需要两个BCD码(8位),可以用char 类型来储存,比如:BCD码:0x99 (153),共八位,储存在char 类型中,它对应的二进制为1001 1001.该BCD码要转换成十转载 2014-06-13 09:00:10 · 27331 阅读 · 2 评论 -
static修饰函数和变量
static修饰符是一个能够减少此类命名冲突的有用工具。例如,以下声明语句static int a;其含义与下面的语句相同int a;只不过,a的作用域限制在一个源文件内,对于其他源文件,a是不可见的。因此,如果若干个函数需要共享一组外部对象,可以将这些函数放到一个源文件中,把它们需要用到的对象也都在同一个源文件中以static修饰符声明。static修饰符原创 2012-03-15 17:39:12 · 2451 阅读 · 0 评论 -
函数名加上了括号
今天看公司的一位大佬写的一个函数库模块--corenowa(这是他自己取的名字),发现里面有很多地方非常巧妙!比如 :#ifdef __STDC__#define STR(x) #x#define CONC(x,y) x##y#define CONC3(x,y,z) x##y##z#else#define STR(x) "x"#define原创 2012-03-29 13:47:53 · 3144 阅读 · 0 评论 -
buffer overflow detected问题解决及gcc-4.1安装
报错:*** buffer overflow detected ***: 将ubuntu 9.04自带的gcc-4.3.2替换成gcc-4.1.0。出现这个报错的背景很多,但根本是gcc版本过高或者过低,使用gcc-4.1即可解决这个问题。gcc-原创 2011-07-22 11:38:46 · 2892 阅读 · 0 评论 -
Linux下如何用GCC编译动态库
本文主要解决以下几个问题 1 为什么要使用库? 2 库的分类 3 创建自己的库 或许大家对自己初学 Linux时的情形仍记忆尤新吧。如果没有一个能较好的解决依赖关系的包管理器,在Linux下安装软件将是一件及其痛苦的工作。你装a包时,可能会提示你要先装b包,当你费尽心力找到b包时,可能又会提示你要先安装c包。我就曾被这样的事搞的焦头烂额,至今一提起rpm仍心有余悸,头皮发麻转载 2011-10-31 15:51:45 · 832 阅读 · 0 评论 -
typedef 函数指针的用法
在网上搜索函数指针,看到一个例子。开始没看懂,想放弃,可是转念一想,这个用法迟早要弄懂的,现在多花点时间看懂它,好过以后碰到了要再花一倍时间来弄懂它。其实很多时候都是这样,如果每次到难一点的内容,总想着下次我再来解决它,那就永远也学不到东西。后面那个例子加了注释,是我对这种用法的理解,希望对新手有所帮助。进入正文: 代码简化, 促进跨平台开发的目的. typedef 行为有点像原创 2012-02-22 14:47:21 · 542 阅读 · 0 评论 -
再谈typedef(重点为函数指针)
有种很方便的写法。typedef int *p;p pointer;这时直接把pointer带入原式中,取代p然后去掉typedef,得到的结果就是int * pointer;哈哈,这样直接替换就很直观多了。C语言语法简单,但内涵却博大精深;如果在学习时只是止步于表面,那么往往后期会遇到很多困难。typedef是C语言中一个很好用的工具,大量存在于已有代码中原创 2012-02-22 14:54:44 · 546 阅读 · 0 评论 -
C/C++ 通用 Makefile
本文提供了一个用于对 C/C++ 程序进行编译和连接以产生可执行程序的通用 Makefile。 在使用 Makefile 之前,只需对它进行一些简单的设置即可;而且一经设置,即使以后对源程序文件有所增减一般也不再需要改动 Makefile。因此,即便是一个没有学习过 Makefile 书写规则的人,也可以为自己的 C/C++ 程序快速建立一个可工作的 Makefile。 这个 Ma原创 2012-02-23 18:27:15 · 826 阅读 · 0 评论 -
extern与static用法(转)
在讨论全局变量之前我们先要明白几个基本的概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌 入式下做开发工作的话,那么你可能原创 2012-02-16 14:50:06 · 733 阅读 · 0 评论 -
C++俄罗斯方块(linux环境)
本程序的运行环境是linux,用到了多线程。创建了一个用来绘图的线程和一个获取按键的线程。程序中有一些需要改善的地方,比如336-338行定义的全局变量以及声明的对象。本来声明的Block和Table对象应该在main函数里面,然后将这两个对象作为参数传递给线程函数getkey。但是好像只能传递一个对象参数给线程函数。希望高手能够对程序进行改进。ps:由于用到了多线程,而pthread不是li...原创 2012-03-12 15:17:29 · 3888 阅读 · 3 评论 -
结构体里的元素前面有一点“.”代表什么意思
提问:在android的bootloader源码目录中,发现这个文件lk/app/aboot/aboot.c里面有一个关于结构体的定义,让我有点不太明白,哪位高手来解惑一下?struct atag_tcc_entry{ char output; char resolution;};struct atag_tcc_entry tcc_param = { .output原创 2012-03-28 17:08:53 · 1900 阅读 · 0 评论 -
宏定义中的‘#’、‘##’操作符和‘...’、‘ __变参__ ’
1.#假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing).#incldue #define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x原创 2012-03-29 14:17:24 · 1064 阅读 · 0 评论 -
"undefined reference to" 问题解决方法
最近在Linux下编程发现一个诡异的现象,就是在链接一个静态库的时候总是报错,类似下面这样的错误:(.text+0x13): undefined reference to `func' 关于undefined reference这样的问题,大家其实经常会遇到,在此,我以详细地示例给出常见错误的各种原因以及解决方法,希望对初学者有所帮助。1. 链接时缺失了相关目标文件(转载 2016-01-18 14:30:26 · 3972 阅读 · 0 评论