1、预定义符号 C语言设置了一些预定义符号,可以直接使用,预定义符号也是在预编译阶段处理的 __FILE__:正在编译的源文件的文件名 __LINE__:文件当前的行号 __DATE__:文件被编译的日期 __TIME__:文件被编译的时间 __STDC__:如果编译器遵循 ANSI C,其值为1,否则未定义 例如: 2、#define定义常量和标识符 ...
LINE代表出现了这个预定义符号的行号,比如这个预定义符号出现在第6行时,那么它就代表6,所以需要使用%d进行打印 DATE代表文件被编译时的日期,打印时需要使用占位符%s TIME代表文件被编译时的具体时间,具体到时分秒,打印时也是使用占位符%s STDC就与编译文件的编译器有关了,如果编译当前文件的编译器完全遵守了ANSI C标...
3. sizeof(int)在预编译阶段是不会被求值的。 只要知道“预编译阶段”在真正的“编译阶段”之前,就很容易理解了。预编译阶段只是对组成源代码中的字符进行作用,从某种意义上来说,它有时甚至不知道它的操作对象是什么,它只是按照既定的规则执行替换。 sizeof(int),无论是sizeof的解析,还是类型的解析,都是在“...
- 定义常量:例如 #define PI 3.14159 ,在编译预处理阶段,程序中所有出现 PI 的地方都会被替换成 3.14159 。- 定义带参数的宏:例如 #define SQUARE(x) ((x)*(x)) ,当在程序中使用 SQUARE(5) 时,会在预处理阶段被替换为 ((5)*(5)) 。需要注意括号的使用,以避免运算顺序错误。3. #if 、 ...
(7)宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值。 文件包含 在C语言中文件包含是指一个源文件可以将另一个源文件的全部内容包含进来。 该命令的作用是在预编译时,将指定源文件的内容复制到当前文件中。
C 语言的编译过程包括四个步骤: (1)预处理:展开头文件/宏替换/去掉注释/条件编译(test.i main .i)。 (2)编译 :检查语法,生成汇编 ( test.s main .s)。 (3)汇编:汇编代码转换机器码(test.o main.o)。 (4)链接:链接到一起生成可执行程序 a.out/a.exe。
一. 编译过程 1. 编译过程图解 编译过程 : 编译过程 : 预处理 -> 编译 -> 汇编 -> 链接; 1. 编译预处理 : 产生 .i 后缀的预处理文件; 2. 编译操作 : 产生 .s 后缀的汇编文件; 3. 汇编操作 : 产生 .o 后缀的机器码二进制文件; ...
如果表达式为真,则编译后面的代码,知道出现#else、#elif或#endif为止;否则就不编译。#endif用于终止#if预处理指令。 示例: c #if SYS ==1 #include "ibmpc.h" #elif SYS ==2 #include "vax.h" #elif SYS ==3 #include "mac.h" #else #include "general.h" #endif...
本文主要介绍c语言中条件编译相关的预编译指令,包括#define、#undef、#ifdef、#ifndef、#if、#elif、#else、#endif、defined。 二、条件编译 条件编译是根据实际定义宏(某类条件)进行代码静态编译的手段。可根据表达式的值或某个特定宏是否被定义来确定编译条件。
预编译命令在整个程序开始编译之前就已经执行。以下是一些常用的预编译命令: 1. #include:用于引入头文件。 例如: ```C #include <stdio.h> //引入标准输入输出头文件 #include "myheader.h" //引入自定义头文件myheader.h ``` 2. #define:用于定义宏。 例如: ```C #define PI 3.14159 //定义宏PI,...