嵌入式软件工程师&&太极拳
全部博文(548)
分类: LINUX
2011-02-20 20:04:26
input (键盘)--> 硬盘 --> ./a.out(事先编译好,起始地址) --> 内存 --> cpu去内存中读 --> 指令(操作码,地址码) --> 操作码给控制器 --> 从地址中取值给cpu内部寄存器 --> 运算器做运算 --> 运算结果给输出部分; c关键字: 1.基本数据类型: char double float int long short void 2.构造数据类型: enum struct union 3.修饰数据类型: auto const extern register signed static unsigned volatile 4.自定义类型 typedef 4.控制语句: break case continue do else goto for if switch while default 5.其他: return sizeof gcc hello.c ==> a.out (可执行文件) cc hello.c ==> a.out (unix之前的编译器) make hello ==> cc hello.c -o hello 写程序的步骤: 1. 确定目标; 显示一个hello world! 2. 设计程序; 1) printf 2) array 3) char * ... 顺序结构 条件 循环; 3. 编写程序; io接口: stdio.h printf 入口函数: main 4. 编译程序; gcc hello.c 1) gcc -E 预处理; 执行预处理命令; 2) gcc -S 编译; .c ==> .s 编成汇编代码; 3) gcc -c 汇编; .s ==> .o 把汇编编成2进制文件;.o不能执行; 4) ld 链接; .o ==> 可执行文件; 可执行; -lm手动链接 c库是自动链接; 5. 执行; 测试; 6. 调试; 1) 语法错误; 2) 逻辑错误; 3) 警告错误; 7. 维护; 预处理: gcc -E hello.c -o hello.i ^ 生成目标; hello.i 编译: gcc -S hello.i -o hello.s ^ 编译; 汇编: gcc -c hello.s -o hello.o ^ 目标文件; 有elf头的2进制文件;不可执行的; 链接: gcc hello.o -o hello ^ 可执行; ------------------------------------------------- sizeof(int) : 返回操作数所占的字节数; ^ sizeof(array) : int i; sizeof(i); 程序用于管理数据; c支持的数据类型: 所占字节数; 取决于平台和编译器; int : c没有规定int是几个字节; 32位平台: 4个字节; int : 字长; 32 ==> 4个字节; 16平台下2个字节; char = 1 : char就是一个字符; 一个字节; short = 2 : c 规定; short <= int; short的size可以等于int; 16平台下2个字节; long = 4 : c 规定; long >= int; long的size可以等于int; 16平台下4个字节 float = 4 double = 8 long long = 8 long double = 12 long float X long int ==> long short int ==> short unsigned int short char long 不能修饰float double