Chinaunix首页 | 论坛 | 博客
  • 博客访问: 220805
  • 博文数量: 253
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 3
  • 用 户 组: 普通用户
  • 注册时间: 2014-09-21 12:29
文章分类

全部博文(253)

文章存档

2014年(253)

我的朋友

发布时间:2014-09-21 12:55:39

如果直接操作结构体成员是不会取到不期望的值 但是对于要求连续数据格式的时候需要考虑对齐的问题 例如通讯中的数据帧格式等 ,如 ip数据包等#pragma   pack(1) struct   tagStruct {     ... } t; #pragma   pack() 的方式来强制连续存放 其中前面   pack(1)   是指对齐边界为   11。几个结构体例子:struct{short a1;short a2;short a3;}A;struct{long a1;short a2;}B;sizeof( ......【阅读全文】

阅读(262) | 评论(0) | 转发(0)

发布时间:2014-09-21 12:55:34

看一些程序的时候老是有“#ifdef __cplusplusextern "C" {#endif”的定义,搞搞清楚是怎么回事:Microsoft-Specific Predefined Macros__cplusplus Defined for C++ programs only. 意思是说,如果是C++程序,就使用extern "C"{而这个东东,是指在下面的函数不使用的C++的名字修饰,而是用C的The following code shows a header file which can be used by C and C++client applications:// MyCFu......【阅读全文】

阅读(261) | 评论(0) | 转发(0)

发布时间:2014-09-21 12:55:32

这句主要作用是提示编译器,对这个函数的调用需要像printf一样,用对应的format字符串来check可变参数的数据类型。例如:extern int my_printf (void *my_object, const char *my_format, ...)__attribute__ ((format (printf, 2, 3)));format (printf, 2, 3)告诉编译器,my_format相当于printf的format,而可变参数是从my_printf的第3个参数开始。这样编译器就会在编译时用和printf一样的check法则来确认可变参数是否正确了。......【阅读全文】

阅读(522) | 评论(0) | 转发(0)

发布时间:2014-09-21 12:55:29

......【阅读全文】

阅读(291) | 评论(0) | 转发(0)

发布时间:2014-09-21 12:55:23

 昨天在看一篇文章的时候,突然想起了这个基础性的问题,自己一直对它的区别不是很清楚,于是今天上午研究下了,分享下自己的理解。(对它很清楚的同学们可以略过此篇文章)       从存储方式来说,文件在磁盘上的存储方式都是二进制形式,所以,文本文件其实也应该算二进制文件。那么他们的区别呢,各自的优缺点呢?不急,我慢慢道来。       先从他们的区别来说,虽然都是二进制文件,但是二进制代表的意思不一样。打个比方,一个人,我们可以叫他的大名,可以叫他的小名,但其实都是代表这个人。 二进制读写是将内存里面的数据直接读写入文......【阅读全文】

阅读(257) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册