C语言学习概述--10/17

 

 计算机系统的基本架构

 

 c语言的32个关键字

 

 Enum: 枚举, 能穷举尽的类型。

Register: 修饰一个变量, 让这个变量直接存到寄存器里面。

signed:  表示有符号

unsigned: 无符号

void:  表示空类型

9 种控制语句:

 

 34中预算符号:

 

 

 1 #include <stdio.h>  // #关键标识符,表示引入头文件; include: 引入头文件关键字  stdio.h系统标准输入,输出库对应的头文件,给prinf函数服务的
 2 
 3 // <>:表示系统库函数 ,“”表示用户自定义的库函数#include"XXX.h"
 4 
 5 int main(void)  //int 表示函数返回值整型数据,  main 函数名, 程序的唯一入口,有且只有一次。void,表示函数无需传参
 6 {  // 函数体起始位置
 7     printf("hello world"); 
 8     system("pause"); //调用system函数实现暂停功能
 9     return 0; //返回当前函数调用值, 要和main 函数的返回值一一对应
10 }

如何使用gcc, gcc 编译命令 gcc helloworld.c -o hellworld.exe  就把helloworld.c 编译成helloworld.exel了

gcc 编译的几个步骤

1. 预处理 gcc -E xxx.c -o xxx.i  ,  不检查错误, 包括语法错误, 及时有错误,会提示你,但是任然会生成xxx.i

(1)头文件展开,比喻说把stdio.h 展开, 不检查语法错误,可以展开任意文件

(2)宏定义替换, 将宏名字, 替换成宏的值,即在预处理阶段就替换宏定义的值

(3)替换注释 , 将注释替换成空行

(4)展开条件编译  ,根据条件来展开指令

#include<stdio.h>

#define PI 3.14

int main(void)
{
    #ifdef PI
    printf("already defined PI\n"); // 如果前面定义了预处理变量PI, 那么就执行这个printf语句,由于前面定义了PI,  所以在预处理的时候会打印already defined 
    #endif // PI

    printf("this is helloworld\n");
    return 0;
}

 

2. 编译

gcc -S xxx.i -o xxx.s

(1) 将c程序翻译成汇编指令

(2) 逐步检查语法错误, 这也是编译中最耗时的步骤。 如果有语法错误,是不会出现xxx.s 文件的。

3. 汇编 , 生成二进制文件

gcc -c xxx.s -o xxx.o

(1) 将汇编指令翻译成对应的二进制编码

4. gcc xxx.o -o xxx.exe

(1) 数据段合并

(2)数据地址回填

(3)库导入

 

 

 

 

posted @ 2022-10-17 22:39  朵朵奇fa  阅读(29)  评论(0编辑  收藏  举报