主页 > 手机  > 

C语言预处理学习笔记

C语言预处理学习笔记
1. 预处理器的功能

预处理器(Preprocessor)在编译C语言程序之前对源代码进行预处理。预处理指令以#号开头,主要包括文件包含、宏定义、条件编译等功能。

2. 文件包含

文件包含功能用于在一个文件中包含另一个文件的内容,通常用于包含头文件。

2.1 #include 指令

#include指令用于包含头文件。头文件可以是标准库头文件或用户自定义头文件。

标准库头文件

标准库头文件使用尖括号<>括起来。

#include <stdio.h> #include <stdlib.h> 用户自定义头文件

用户自定义头文件使用双引号""括起来。

#include "myheader.h" 3. 宏定义

宏定义用于定义宏常量和宏函数,便于代码的重用和管理。

3.1 定义宏常量

#define指令用于定义宏常量。

#define PI 3.14 #define MAX_SIZE 100 3.2 定义宏函数

宏函数是一种简单的文本替换,不进行参数类型检查和计算。

#define SQUARE(x) ((x) * (x)) #define MAX(a, b) ((a) > (b) ? (a) : (b)) 3.3 取消宏定义

#undef指令用于取消宏定义。

#undef PI 4. 条件编译

条件编译用于根据条件选择性地编译代码,便于跨平台开发和调试。

4.1 #if 和 #endif 指令

#if 指令用于在条件为真时编译代码块。

#define DEBUG 1 #if DEBUG printf("Debug mode\n"); #endif 4.2 #ifdef 和 #endif 指令

#ifdef 指令用于在宏已定义时编译代码块。

#define FEATURE_ENABLED #ifdef FEATURE_ENABLED printf("Feature is enabled\n"); #endif 4.3 #ifndef 和 #endif 指令

#ifndef 指令用于在宏未定义时编译代码块。

#ifndef MAX_SIZE #define MAX_SIZE 100 #endif 4.4 #else 和 #elif 指令

#else 和 #elif 指令用于在条件为假时编译代码块。

#define VALUE 10 #if VALUE < 5 printf("Value is less than 5\n"); #elif VALUE < 15 printf("Value is less than 15\n"); #else printf("Value is 15 or greater\n"); #endif 5. 常用的预定义宏

预定义宏是编译器预定义的宏,可以在程序中使用。

5.1 __FILE__

__FILE__宏表示当前源文件的名称。

printf("Current file: %s\n", __FILE__); 5.2 __LINE__

__LINE__宏表示当前源文件的行号。

printf("Current line: %d\n", __LINE__); 5.3 __DATE__

__DATE__宏表示当前编译日期。

printf("Compile date: %s\n", __DATE__); 5.4 __TIME__

__TIME__宏表示当前编译时间。

printf("Compile time: %s\n", __TIME__); 5.5 __FUNCTION__

__FUNCTION__宏表示当前函数的名称。

void myFunction() { printf("Current function: %s\n", __FUNCTION__); } 6. 宏和函数的区别 宏在预处理阶段进行文本替换,不进行参数类型检查和计算。函数在编译阶段进行实际调用,具有参数类型检查和计算。 6.1 宏示例 #define SQUARE(x) ((x) * (x)) int main() { int a = 5; printf("Square of %d: %d\n", a, SQUARE(a)); return 0; } 6.2 函数示例 int square(int x) { return x * x; } int main() { int a = 5; printf("Square of %d: %d\n", a, square(a)); return 0; }
标签:

C语言预处理学习笔记由讯客互联手机栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“C语言预处理学习笔记