美文网首页
C-预处理器

C-预处理器

作者: 小石头呢 | 来源:发表于2019-08-05 22:56 被阅读0次
  • C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。

  • C 预处理器只不过是一个文本替换工具而已,它们会指示编译器在实际编译之前完成所需的预处理。

  • 我们将把 C 预处理器(C Preprocessor)简写为 CPP。

  • 所有的预处理器命令都是以井号(#)开头。

重要的预处理指令

一.预处理器实例

解决App上线不能向终端输入信息的问题

#define DEBUG 1

#if DEBUG
  #define Log(x) printf(x)
#else 
  #define Log(x)
#endif

二.预定义宏

在编程中您可以使用这些宏,但是不能直接修改这些预定义的宏。

#include <stdio.h>

int main() {
   printf("File :%s\n", __FILE__ );
   printf("Date :%s\n", __DATE__ );
   printf("Time :%s\n", __TIME__ );
   printf("Line :%d\n", __LINE__ );

   return 0;
}

//运行结果
File :c:\users\a2867\desktop\c语言学习\c语言阶段\day6_2.s_t\s_t.cpp
Date :Aug  5 2019
Time :22:32:28
Line :8

三.预处理器运算符

  • 一个宏通常写在一个单行上。但是如果宏太长,一个单行容纳不下,则使用宏延续运算符(\)。
#define  message_for(a, b)  \
    printf(#a " and " #b ": We love you!\n")
  • 在宏定义中,当需要把一个宏的参数转换为字符串常量时,则使用字符串常量化运算符(#)
#include <stdio.h>

#define  message_for(a, b)  \
    printf(#a " and " #b ": We love you!\n")

int main(void) {
   message_for(Carole, Debra);
   return 0;
}

//运行结果
Carole and Debra: We love you!
  • 宏定义内的标记粘贴运算符(##)会合并两个参数,它允许在宏定义中两个独立的标记被合并为一个标记。
#include <stdio.h>

#define tokenpaster(n) printf ("token" #n " = %d", token##n)

int main(void) {
   int token34 = 40;
   
   tokenpaster(34);
   return 0;
}

//运行结果
//实际上执行了printf ("token34 = %d", token34);
token34 = 40

四.参数化的宏

  • CPP 一个强大的功能是可以使用参数化的宏来模拟函数。
#include <stdio.h>

#define MAX(x,y) ((x) > (y) ? (x) : (y))

int main(void) {
   printf("Max between 20 and 10 is %d\n", MAX(10, 20));  
   return 0;
}

//运行结果
Max between 20 and 10 is 20

相关文章

  • C-预处理器

    C 预处理器不是编译器的组成部分,但是它是编译过程中一个单独的步骤。 C 预处理器只不过是一个文本替换工具而已,它...

  • 关于预处理器LESS的使用

    要了解预处理器LESS的使用,首先得知道什么是预处理器,说到预处理就会讲到后处理器 一、预编译器和后编译 1.预处...

  • 【Java学习干货】SpringMVC中拦截器的使用

    什么是拦截器?SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处...

  • 初识css预编译之Less

    什么是less less是CSS的预处理器,学过C语言的同学应该对预处理器挺熟悉的把,C语言的编译过程就分为:预处...

  • jmeter随机生成11位手机号

    方法一 随机数生成方法,使用BeanShell 预处理程序 1、【线程组-添加-后置处理器-BeanShell 预...

  • /Zc:__plusplus的意义

    预 __cplusplus 处理器宏通常用于报告对特定版本的 C++ 标准的支持,默认情况下,Visual Stu...

  • 9、SpringMVC-拦截器

    一、概要 Spring Web MVC的拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预...

  • 二十二. SpringMVC-拦截器

    一、概要 Spring Web MVC的拦截器,类似于Servlet开发中的过滤器Filter,用于对处理器进行预...

  • C 程序结构

    C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 程序第一行#include 是预处...

  • 一分钟技能

    Recognize these scenarios? When Sally got a C- on a test,...

网友评论

      本文标题:C-预处理器

      本文链接:https://www.haomeiwen.com/subject/oasydctx.html