当前位置:   article > 正文

C语言学习笔记:预处理器和宏

C语言学习笔记:预处理器和宏

C

语言的预处理器(preprocessor)是其编译过程中的特殊部分。它可以识别、分析并按照其描述进行处理。C语言的预处理器发生在编译之前,不属于编译的一部分。

C语言的预处理器比较常见的包括:#include,#define,宏(macro)和#error。

#include

#include可以说是c语言中最常见的预处理器,用来引用头文件。比如引用stdio.h:

#include <stdio.h>

#define

#define 的作用是将程序中的一些常量命名,如:

  1. #define YES 1
  2. #define PI 3.14
  3. #define MYNAME "paul"

需要注意的是这些命名与变量赋值不同。变量赋值会在内存中划出一片区域用于存储该变量,#define属于预处理,发生在编译之前,编译器不会划出内存来存储#define的值。在编译前,编译器会找到程序中出现的#define对应的名称并将其替换为对应的值。

宏(macro)

宏是一种特殊的#define方式,它实现了类似于函数的功能。比如:

#define SQUARE(n) n*n

在程序中可以这样使用:

  1. #include <stdio.h>
  2. #define SQUARE(n) n*n
  3. int main()
  4. {
  5. int x = 3;
  6. int y = SQUARE(x);
  7. printf("%d",y);
  8. return 0;
  9. }

运行结果是:9。

其他的一些宏:

比较大小

#define MAX(a,b) ( ((a) > (b)) ? (a) : (b) )

检查一个字符是否是小写
 

#define IS_LOWER_CASE(x) ( ((x) >= 'a') && ((x) <= 'z') )

以及多参数的宏(Variadic Macros)

#define debugPrintf(...) printf("DEBUG: " __VA_ARGS__);

使用该宏的时候,变量可以是一个,如

  1. #define debugPrintf(...) printf("DEBUG: " __VA_ARGS__);
  2. int main()
  3. {
  4. debugPrintf("Hello World!\n");
  5. return 0;
  6. }

 也可以是多个

  1. #define debugPrintf(...) printf("DEBUG: " __VA_ARGS__);
  2. #define testprintf(...) printf("test: " __VA_ARGS__);
  3. int main()
  4. {
  5. int x=12;
  6. int y=13;
  7. debugPrintf("x=%d, y=%d\n", x, y);
  8. testprintf("hey hey");
  9. return 0;
  10. }

#error

#error将字符串直接输出到error stream:

#error "error message"

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/223794
推荐阅读
相关标签
  

闽ICP备14008679号