
GNU C
yarsen
这个作者很懒,什么都没留下…
展开
-
linux 内核GNU C语法简介
<!--@page {margin:2cm}pre.western {font-family:"DejaVu Sans Mono",monospace}pre.cjk {font-family:"DejaVu Sans",monospace}pre.c转载 2011-09-25 15:44:53 · 1409 阅读 · 0 评论 -
C语言预处理命令之条件编译(#ifdef,#else,#endif,#if等)
预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语句和宏转载 2011-12-19 19:44:16 · 944 阅读 · 1 评论 -
define的用法与注意事项
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对C语言的学习很不利。下面将分别对基本用法和特殊做详细介绍。一、#define的基本用法1 #define转载 2011-12-20 11:18:54 · 1235 阅读 · 2 评论 -
GNU make 介绍
make在执行时,需要一个命名为Makefile的文件。这个文件告诉make以何种方式编译源代码和链接程序。典型地,可执行文件可由一些.o文件按照一定的顺序生成或者更新。如果在你的工程中已经存在一个活着多个正确的Makefile。当对工程中的若干源文件修改以后,需要根据修改来更新可执行文件或者库文件,正如前面提到的你只需要在shell下执行“make”。make会自动根据修改情况完成源文件的对应.转载 2011-12-21 20:43:24 · 629 阅读 · 1 评论 -
Linux 内核初始化的宏实现简析
在分析Linux网络栈的时候,分析网络子系统的初始化是一件很重要的事情。有一些子系统并不能以模块的形式出现,因为它们是必须存在于内核当中,随内核启动而加载。不过,与普通应用程序初始化不同的是,它们的初始化工作,并没有使用显示的函数调用,而是透过一些巧秒的宏来实现。例如:/* Initialize the DEV module. */static int __init net_d转载 2012-01-09 10:18:49 · 975 阅读 · 1 评论 -
Managing Projects with GNU make 学习笔记
1. 简介makefile定义了一种语言来描述源代码、中间文件及可执行文件之间的关系。如果命令行指定了目标,则更新指定的目标,如果没有,则取第一个目标,也即默认目标。1.1 目标与依赖makefile包含构造程序的一组规则,规则包含三个部分:目标、依赖及执行命令。 target: prereq1 prereq2 commandstarget是需要构造的东西,依赖则是转载 2012-03-31 14:31:23 · 2059 阅读 · 2 评论 -
C可变参数函数 实现
http://blog.youkuaiyun.com/weiwangchao_/article/details/4857567C函数要在程序中用到以下这些宏:void va_start( va_list arg_ptr, prev_param ); type va_arg( va_list arg_ptr, type ); void va_end( va_list arg_ptr转载 2013-08-07 09:52:37 · 651 阅读 · 0 评论 -
gcc 中的"__attribute__ ((packed))"
__attrubte__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐。#define __u8 unsigned char#define __u16 unsigned shortstruct str_struct{ __u8 a; __u8 b;转载 2013-09-03 15:05:51 · 1177 阅读 · 0 评论