c语言编译过程按键,C_c语言的编译过程、关键字、标示符、ASIIC回顾

c程序编译分四个阶段:

1、预处理:编译前的准备工作,就是将.c文件转换为.i文件,预处理阶段不编译文件内容。作用就是:把头文件打开。命令:gcc

-o kk.i kk.c -E  //kk:文件名

例如:

下面生成的东西就是头文件(#include )里的东西,作用就是先把包含的头文件打开。

# 1 "9.c" # 1 "" # 1 "" # 1 "9.c" # 1 "/usr/include/stdio.h" 1

3 4 # 64 "/usr/include/stdio.h" 3 4 # 1 "/usr/include/sys/cdefs.h"

1 3 4 # 406 "/usr/include/sys/cdefs.h" 3 4 # 1

"/usr/include/sys/_symbol_aliasing.h" 1 3 4 # 407

"/usr/include/sys/cdefs.h" 2 3 4 # 472 "/usr/include/sys/cdefs.h" 3

4 # 1 "/usr/include/sys/_posix_availability.h" 1 3 4 # 473

"/usr/include/sys/cdefs.h" 2 3 4 # 65 "/usr/include/stdio.h" 2 3 4

# 1 "/usr/include/Availability.h" 1 3 4 # 144

"/usr/include/Availability.h" 3 4 # 1

"/usr/include/AvailabilityInternal.h" 1 3 4 # 145

"/usr/include/Availability.h" 2 3 4 # 66 "/usr/include/stdio.h" 2 3

4 # 1 "/usr/include/_types.h" 1 3 4 # 27 "/usr/include/_types.h" 3

4 # 1 "/usr/include/sys/_types.h" 1 3 4

2、编译阶段:将.i文件再生成一个.s文件,.s文件就是汇编码。命令:gcc -o kk.s kk.i -S

例如:

.section __TEXT,__text,regular,pure_instructions .globl _main

.align 4, 0x90 _main: Leh_func_begin1: pushq %rbp Ltmp0: movq %rsp,

%rbp Ltmp1: subq $32, %rsp Ltmp2: movb $-68, -9(%rbp) movl $-68,

-16(%rbp) movl -16(%rbp), �x xorb %cl, %cl leaq L_.str(%rip), %rdx

movq %rdx, %rdi movl �x, %esi movb %cl, %al callq _printf movl

-16(%rbp), �x xorb %dl, %dl leaq L_.str1(%rip), %rdi

3、汇编阶段:就是将的到得汇编码翻译成机器码(就是0和1码)。

命令:Gcc -o kk.o kk.s -c

4、链接静态库

命令:Gcc -o kk kk.o // kk就是最后生成的可执行文件。

二、关键字(32个):是C语言编译器能识别的。有特殊含义的非自定义的字符串。

[code]auto :声明自动变量 一般不使用

double :声明双精度变量或函数

int: 声明整型变量或函数

struct:声明结构体变量或函数

break:跳出当前循环

else :条件语句否定分支(与 if 连用)

long :声明长整型变量或函数

switch :用于开关语句

case:开关语句分支

enum :声明枚举类型

register:声明积存器变量

typedef:用以给数据类型取别名(当然还有其他作用)

char :声明字符型变量或函数

extern:声明变量是在其他文件正声明(也可以看做是引用变量)

return :子程序返回语句(可以带参数,也看不带参数)

union:声明联合数据类型

const :声明只读变量

float:声明浮点型变量或函数

short :声明短整型变量或函数

unsigned:声明无符号类型变量或函数

continue:结束当前循环,开始下一轮循环

for:一种循环语句(可意会不可言传)

signed:生命有符号类型变量或函数

void :声明函数无返回值或无参数,声明无类型指针(基本上就这三个作用)

default:开关语句中的“其他”分支

goto:无条件跳转语句

sizeof:计算数据类型长度

volatile:说明变量在程序执行中可被隐含地改变

do :循环语句的循环体

while :循环语句的循环条件

static :声明静态变量

if:条件语句 [/code]

三、标示符

在编写程序时,需要对变量、函数、宏和其他实体进行命名,这些名字称为标示符,在C语言中标示符可以含有字母、数字、下划线,但是必须以字母或下划线开头。

四、ASIIC

a4c26d1e5885305701be709a3d33442f.png

计算机的存储设备作为二进制的存储设备,只能存储二进制的数字,也就是正数,而不能直接存储字符等其他数据,为了能存储字符数据,就必须该所有的字符分配一个代表他的数字,这就是ASIIC码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值