C
TIC_YX
technology-Internet-Coding
展开
-
c中的内存对齐
1、结构体对齐原因有很大部分是因为计算机扫描的内存单元个数,也就是数据总线的大小。2、对齐的原则: 原则1:数据成员对齐规则:结构(struct或联合union)的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储)。 原则2:结构体作为成员:如果一转载 2013-08-02 16:57:37 · 1149 阅读 · 1 评论 -
GCC 编译技术
摘自:http://blog.csdn.net/niuniuchou/article/details/5394210一. 常用编译命令选项假设源程序文件名为test.c。1. 无选项编译链接用法:#gcc test.c作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。2. 选项 -o用法:#gcc test转载 2014-03-20 16:05:12 · 669 阅读 · 0 评论 -
c++ 时间类型详解 time_t
Unix时间戳(Unix timestamp),或称Unix时间(Unix time)、POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数。Unix时间戳不仅被使用在Unix 系统、类Unix系统中,也在许多其他操作系统中被广告采用。目前相当一部分操作系统使用32位二进制数字表示时间。此类系统的Uni转载 2014-04-17 15:38:10 · 1960 阅读 · 0 评论 -
gcc Makefile 入门
使用makebiany目录:一、make命令的运行过程二、基本gcc编译命令三、简单Makefile文件的编写四、实例一、make命令的运行过程 在shell的提示符号下,若输入"make",则它会到目前的目录下找寻Makefile这个文件.然后依照Makefile中所记录的步骤一步一步的来执行.在我们写程序的时候,如果事先就把compiler程式所需要的步骤先写转载 2014-07-01 14:44:55 · 961 阅读 · 0 评论 -
linux内核驱动入门程序
装载驱动:#include 定义的宏 __init __initdata //模块始初化的函数或数据标记,标记为初始化的项目会在初始化结束后丢弃; __exit __exitdata //模块清除阶段的函数或数据标记,标记为清除化项目会在内核示被配置为可卸载模块的情况下被丢弃。 //内转载 2014-07-02 13:01:37 · 776 阅读 · 0 评论 -
squid main函数剖析
要分析一款开源的软件除了要弄清楚一些基本的使用和配置之外,其次最重要的就是对源代码进行分析。对源代码进行分析首先应从其main函数分析入手,了解他在启动时的涉及的哪方面的功能,并勾勒出他的运行流程图,现在squid已经支持windows平台了,并且支持以服务的方式启动。其代码如下:转载 2014-07-10 20:31:23 · 769 阅读 · 0 评论 -
socket通信
#include #include #include #include #include #include #include #define BUFLEN 1024#define MAX_CONN 100#define SERVER_PORT 3333int initServer(int socket_type, const struct原创 2014-08-07 21:34:43 · 966 阅读 · 0 评论 -
程序打补丁以及在shell里面写c代码
diff程序是linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件(本文中的a.c、b.c可以理解为两个版本的同一个文件,b.c是在a.c的基础上的修正版)以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁(patch),因为unix系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更转载 2014-08-12 16:58:42 · 1656 阅读 · 0 评论 -
linux下如何生成静态、动态链接库文件
一、为什么要使用库文件我们在实际编程工作中肯定会遇见这种情况:有几个项目里有一些函数模块的功能相同,实现代码也相同,也是我们所说的重复代码。比如,非常多项目里都有一个用户验证的功能。代码段如下: //UserLogin.h文件,提供函数声明 int IsValidUser(char* username, int namelen); //UserLogin.转载 2014-08-13 17:20:14 · 1175 阅读 · 0 评论 -
C/C++回调函数简要介绍
C/C++回调函数简要介绍摘自:http://my.oschina.net/jungleliu0923/blog/198151?from=20140216目录[-]1、引子2、概念3、举例3.1、通用头文件 pub.h3.2、callback模块3.3、main模块3.4、Makefile3.5、执行结果 1、引子在C/C++里面有个非常给力的库函转载 2014-02-19 10:27:59 · 886 阅读 · 0 评论 -
c中结构体指针的强制类型转换
1、结构体到结构体指针之间的转换结构体指针的强制类型转换即结构体的数据成员在内存段当中的重新分配,结构体的存储“内存对齐”请参看上篇博客,该论述实例如下:#include #include struct A{ int num; }; struct B{ int num; char type; int age;};原创 2013-08-03 09:55:29 · 16900 阅读 · 0 评论 -
uint8_t,uint16_t,uint32_t 数据类型
uint8_t,uint16_t,uint32_t数据类型 在nesc的代码中,你会看到很多你不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言(nesc是C的扩展)里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少转载 2013-08-06 10:59:46 · 1681 阅读 · 0 评论 -
c指针
C语言指针使用方法======================指针是c和c++中的难点和重点。指针是c的灵魂。指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。先声明几个指针放着做例子:转载 2013-08-22 22:27:51 · 668 阅读 · 0 评论 -
c大小为0的数组
大小为0的数组 Q:数组大小为0应该怎么理解? 比如: struct page *page[0]; unsigned long private[0] ____cacheline_aligned;A:一个很好的例子就是 struct unix_address { atomic_t refcnt; int len; unsigned has转载 2013-08-23 11:03:12 · 1129 阅读 · 0 评论 -
c 库
运行时库是程序在运行时所需要的库文件,通常运行时库是以LIB或DLL形式提供的。C运行时库诞生于20世纪70年代,当时的程序世界还很单纯,应用程序都是单线程的,多任务或多线程机制在此时还属于新观念。所以这个时期的C运行时库都是单线程的。 随着操作系统多线程技术的发展,最初的C运行时库无法满足程序的需求,出现了严重的问题。C运行时库使用了多个全局变量(例如errno)和静态变量,这可能在多转载 2013-09-09 22:03:19 · 754 阅读 · 0 评论 -
C++内存回收
3.1 C++内存对象大会战 如果一个人自称为程序高手,却对内存一无所知,那么我可以告诉你,他一定在吹牛。用C或C++写程序,需要更多地关注内存,这不仅仅是因为内存的分配是否合理直接影响着程序的效率和性能,更为主要的是,当我们操作内存的时候一不小心就会出现问题,而且很多时候,这些问题都是不易发觉的,比如内存泄漏,比如悬挂指针。笔者今天在这里并不是要讨论如何避免这些问题,而是想从另外一个角转载 2013-09-09 22:17:14 · 1320 阅读 · 1 评论 -
c传参引用const
1、引用和非引用参数: 引用类型参数传的是别名,可以通过函数进行修改;非引用参数实现的是复制,不可以通过函数修改其值。 注解:非引用形参表示对应实参的局部副本,对这类行参的修改仅仅改变了局部副本的值,一旦函数执行结束,这些局部变量的值也就没有了。 引用形参: a. 使用引用形参返回额外的信息 函数只能返回单个值,但有时候函数有原创 2013-09-14 12:27:38 · 1809 阅读 · 0 评论 -
c编程必知
测试环境:ubuntu 12.1 编译器vim1、char[] 和 char*int main(){ char * str = "asdfghjk"; char s[5] = {'a', 's', 'd', 'f', 'g'}; printf("%c\n",*str); printf("%s\n", str); printf("%p\n“原创 2013-12-11 21:29:10 · 764 阅读 · 0 评论 -
Configure,Makefile.am, Makefile.in, Makefile文件之间关系
1.autoscan (autoconf): 扫描源代码以搜寻普通的可移植性问题,比如检查编译器,库,头文件等,生成文件configure.scan,它是configure.ac的一个雏形。 your source files --> [autoscan*] --> [configure.scan] --> configure.ac2.aclocal (automake):根据已转载 2014-08-14 14:22:11 · 926 阅读 · 0 评论