c语言四步骤预处理编译,【C语言】了解编译过程、熟悉预处理的标识符

编译C程序涉及很多步骤:

生成可执行文件一般分为4步:

1.预处理

2.编译

3.汇编

4.链接

0818b9ca8b590ca3270a3433284dd417.png

预处理主要完成四件事:

(1)头文件展开

(2)宏替换

(3)去注释

(4)条件编译

⼀、 ⽂件名约定

C的源代码保存于.c扩展名命名的⽂件中。头⽂件保存于扩展名为.h的⽂件中。

产⽣的⽬标⽂件名在类unix系统中扩展名为.o,在WIN X系统中扩展名是.obj。

⼆、编译和链接在类unix系统中:

1.编译并链接⼀个完全包含于⼀个源⽂件的c程序:

acprogram.c

2.这条命令产⽣⼀个a.out的可执⾏程序。中间会产⽣⼀个名为program.o的⽬标⽂件,但是它在链接完成之后被删除。

3.编译并链接⼏个源⽂件:

acmain.c sort.c lookup.c

4.编译⼀个C源⽂件,并把它和现存的⽬标⽂件链接在⼀起。

acmain.o lookup.o sort.c

5.编译单个C源程序,并产⽣⼀个⽬标⽂件,以后再进⾏链接:

ac–c program.c

6.编译⼏个C源程序,并为每个⽂件产⽣⼀个⽬标⽂件:

ac–c main.c sort.c lookup.c

7.链接⼏个⽬标⽂件:

acmian.o sort.o lookup.o

8.⽬标⽂件也可以指定的:

ac–o name program.c

1.1.2执⾏

程序执⾏的过程:

1.程序必须载⼊内存中。在有操作系统的环境中:⼀般这个由操作系统完成。在独⽴的环境中,程序的载⼊必须由⼿⼯安排,也可能是通过可执⾏代码置⼊只读内存来完成。

2.程序的执⾏便开始。接着便调⽤main函数。

3.开始执⾏程序代码。这个时候程序将使⽤⼀个运⾏时堆栈

(stack),存储函数的局部变量和返回地址。程序同时也可以使⽤静态(static)内存,存储于静态内存中的变量在程序的整个执⾏过程⼀直保留他们的值。

4.终⽌程序。正常终⽌main函数;也有可能是意外终⽌。

0818b9ca8b590ca3270a3433284dd417.png

编译过程:

0818b9ca8b590ca3270a3433284dd417.png

熟悉预处理标识符:

FILE //进⾏编译的源⽂件

LINE //⽂件当前的⾏号

TIME //⽂件被编译的时间

DATE//文件被编译的日期

STDC //如果编译器遵循ANSI C,其值为1,否则未定义

如:

int main()

{

printf("FILE:%s\nLINE:%d\nDATE:%s\nTIME:%s\n", __FILE__, __LINE__, __DATE__, __TIME__);

return 0;

}

0818b9ca8b590ca3270a3433284dd417.png

这样可以输出当前编译⽂件的相关信息。

#

⽤预处理器将⼀个宏参数转换为⼀个字符串。(#argument 这种结构被处理器翻译为"argument")

#与##用法

//⽤预处理器将⼀个宏参数转换为⼀个字符串。(#argument 这种结构被处理器翻译为"argument")

//结构则执⾏⼀种不同的任务。它把位于它两边的符号连接成⼀个符号(粘贴作用)

#include

#define VALUE 9

#define VALUE 9

//续行宏定义传参 验证#用法

#define PRINT( FORMAT, VALUE ) \

printf("The value of " #VALUE " is " FORMAT"\n", VALUE);

//验证##粘贴作用

#define CAT(STR1,STR2) STR1##STR2

int main()

{

PRINT("%d", VALUE);

CAT("Hello,", "world!");

printf("%s\n",CAT("HELLO,","WORLD!"));

return 0;

}

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值