随笔分类 -  C/C++开发

摘要:转自http://hi.baidu.com/deep_pro/blog/item/c59470afea08f0ca7dd92a1b.html这篇的东西只对GNU C有效,其他的标准C 或者VC 并不适用1.允许零长度数组GNU C允许零长度数组,在定义变长对象的头结构时,这个特性非常有用。struct var_data s{ int len; char data[0];};char data[0]仅仅意味着程序中通过var_data的结构体实例的data[index]成员可以访问len之后的第index个地址,并没有为data[0]分配内存。假设struct var_data的数据域保存在st 阅读全文
posted @ 2012-05-31 20:10 moonbay 阅读(203) 评论(0) 推荐(0)
摘要:摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理。但不同操作系统的动态库由于格式 不同,在需要不同操作系统调用时需要进行动态库程序移植。本文分析和比较了两种操作系统动态库技术,并给出了将Visual C++编制的动态库移植到Linux上的方法和经验。1、引言动态库(Dynamic Link Library abbr,DLL)技术是程序设计中经常采用的技术。其目的减少程序的大小,节省空间,提高效率,具有很高的灵活性。采用动态库技术对于升级软件版本更加容易。与静 阅读全文
posted @ 2011-12-13 21:04 moonbay 阅读(283) 评论(0) 推荐(0)
摘要:一、位域 有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位 域的定义和位域变量的说明位域定义与结构定义相仿,其形式为: struct 位域结构名 { 位域列表 }; 其中位域列表的形式为: 类型说明符 位域名:位域长度... 阅读全文
posted @ 2011-12-08 15:07 moonbay 阅读(619) 评论(0) 推荐(0)
摘要:库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so libhello.a 为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如: libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。 ln -s libhello.so.1.0 libhello.so.1 ln -s libhello.so.1 libhello.so 使用库 当 要使用静态的程序库时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。 阅读全文
posted @ 2011-12-06 16:30 moonbay 阅读(273) 评论(0) 推荐(0)
摘要:wprintf(L"小开\n"); 无法正确输出?! 大学时就遇到这个问题,觉得很奇怪,为什么明明 Windows NT 系列内核都是使用 Unicode 的,而且在中文系统下跑,怎么反而无法输出汉字?虽然那时候鼓浪听涛上有前辈给出了提示,但还是不明白怎么会有这么 BT 的 CRT…… 最近看了《C99 规范》才明白了,原来这是“规范”规定的(C99 这样规定,C89 应该也有吧,谁证实一下?):At program startup, the equivalent of setlocale(LC_ALL, "C"); is executed. 所以,se 阅读全文
posted @ 2011-11-29 11:43 moonbay 阅读(442) 评论(0) 推荐(0)
摘要:http://blog.csdn.net/bookish_2010_prj/archive/2010/04/06/5454771.aspxC++ STL IO流 与 Unicode (UTF-16 UTF-8) 的协同工作凡用到文件读写,输入输出,就得和编码、Unicode 打交道。这系列实验来测试一下 C++ STL 的 IO流 对 ANSI 编码、Unicode 编码的支持特性,看能否找到一个自动识别编码,自动转码的解决方案。从基础开始,一步一步来:平台 Win32 XP sp3 + VS2008. (+ Boost 1.36.0)实验 01:#include<string># 阅读全文
posted @ 2011-11-28 14:18 moonbay 阅读(632) 评论(0) 推荐(1)