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

全部博文(253)

文章存档

2014年(253)

我的朋友

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

要理解.c文件与.h文件有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息 编译器在编译时是以c文件为单位进行的,也就是说如果你的项目中一个c文件都没有,那么你的项目将无法编译,连接器是以目标文件为单位,它将一个或多个目 标文件进行函数与变量的重定位,生成最终的可执行文件,在P......【阅读全文】

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

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

预编译(预处理)就是在正式编译之前的,为正式编译做准备,处理以#开头的指令。1, 在看linux内核代码时会看到某些结构体的定义中包含宏定义:12345678910111213struct i2c_msg {    __u16 addr;    /* slave address            */   ......【阅读全文】

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

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

#define MACRO_NAME(para) do{macro content}while(0)的格式,总结了以下几个原因:1,空的宏定义避免warning:      #define foo() do{}while(0) 2,存在一个独立的block,可以用来进行变量定义,进行比较复杂的实现。3,如果出现在判断语句过后的宏,这样可以保证作为一个整体来是实现:     #define foo(x) \&......【阅读全文】

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

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

测试代码:#include <stdio.h>int main(void){    int            n = 0;    int            i = 0;  &nbs......【阅读全文】

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

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

/*creat a bittree*/#include "stdlib.h"#include "stdio.h"typedef struct BiTNode{  int data;  struct BiTNode *lchild,*rchild;}BiTNode, *BiTree;BiTNode* getnode(){  BiTNode* p;  p = (BiTNode*)m......【阅读全文】

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

登录 注册