gcc编译格式(gcc预处理及printf格式化输出)

一、main()函数种类:main函数标准类型

无参:int main(void) { return 0; }

有参:int main(int argc, *argv[]) { return 0; }

main()函数其他基本类型

//都能正常运行,但是不是main()的标准语句

void main(int argc, char *argv[]);

void main(void);

int main();

int main(void);

main();

main(int argc, *argv[]);

二、gcc编译四步骤

源文件

gcc编译格式(gcc预处理及printf格式化输出)(1)

预处理

参数:-E生成的文件:hello.i 预处理文件使用命令:gcc -E hello.c -o hello.i工具:预处理器(包含在gcc编译集合工具中完成的工作:1、头文件展开—展开stdio.h文件内容和源码在一起,放在hello.i中。并且不检测语法错误,可以在任何阶段展开文件。

宏定义替换

#include <stdio.h>//宏定义#define PI 23.123int main(void){ printf("Hello! My programmer C \n"); //使用宏 printf("PI = %f\n", PI); return 0;}

将宏名,替换成宏值。#define PI 23.123 (define:创建宏,PI:宏名,23.123:宏值 )

替换注解:把注解替换成空行

展开条件编译—根据条件展开代码

#include <stdio.h>//宏定义#define PI 23.123 //定义与否,直接决定了下面的-------longcm是否打印int main(void){ printf("Hello! My programmer C \n"); //使用条件编译命令是,如果定义PI,那么就打印---------longcm,是否不打印#ifdef PI printf("-----------longcm\n");#endif return 0;}

编译

参数:——S生成的文件:gcc -S hello.i -o hello.s工具:编译器(包含在gcc 编译集合工具中)完成的工作:1、逐行检查语句错误。(重点)——编译过程整个gcc编译四步骤中,最耗时。2、将c程序翻译成汇编指令,得到 .S 汇编文件

汇编

参数:——c生成的文件:hello.o 目标文件使用命令:gcc -c hello.s -o hell.o工具:编译器完成的工作:翻译将汇编指令翻译成对应的二进制指令

链接

参数:——无生成的文件:hello.exe可执行文件使用命令:gcc -c hello.o -o hell.exe工具:链接器完成的工作:库引入、合并多目标文件、合并启动例程

printf格式化输出in

#include <stdio.h>#define PI 23.123 int main(void){ int a = 20; printf("%d\n",a);//%d格式匹配符,匹配整数 printf("a= %d\n", a); printf("PI =%f\n", PI); printf("%f\n", 23.12343); int b = 30; printf("%d %d =%d\n", a,b , a b); printf("%d %d \n", 5,8, 7 8 ); return 0;}

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页