• C语言预处理


    1.预处理

      可以使用预处理和具有预处理的功能是C语言和其他高级语言的区别之一。

    宏定义

      宏定义是预处理命令的一种,它提供了一种可以替换源代码中字符串的机制。

    宏定义的类型

      可以简单分为有参数宏定义,和无参数宏定义。

    (1)不带参数宏定义

      语法:#define 宏名 字符串

       demo:1 # define Y "ZYY" 

      详解:

    1.   # 表示这是一条预处理命令
    2.   宏名是一个标识符,必须符合C语言标识符的规定
    3.   字符串 这里可以是常数,表达式,格式字符串等。

    注意:宏定义不是C语言,不需要在末尾加分号.  

          宏名定义以后也可以成为其他宏名定义的一部分

         demo:  # define PI 3.1415 

           # define PI2 PI*PU 

    注意:如果字符串中含有宏名的话则不会被替换

    #undef 可以用来终止宏定义的作用范围

    语法: #undef 宏名


    (2)带参数的宏定义

      带参数的宏定义不是简单的字符串替换,还要进行参数替换 一般形式如下:

        #define 宏名(参数) 字符串

      demo:

     1 # include <stdio.h>
     2 # include <stdlib.h>
     3 # define MIX(a,b) ((a)*(b)+(b)) 
     4 int main ()
     5 {
     6     int x = 5,y = 9;
     7     printf("x,y:
    ");
     8     printf("%d,%d
    ",x,y);
     9     printf("the main number is %d
    ",MIX(x,y));
    10     return 0;
    11 }

    用宏定义来代替函数的好处是可以增加代码的执行速度,因为不存在函数的调用,缺点是由于重复编码,增加了程序的长度

    注意:

         宏定义时参数要加括号,如不加括号,则有时结果是正确的,有时结果却是错误的

         宏扩展必须使用括号来保护表达式中低优先级的操作符号,以确保调用时达到想要的效果

         在带参数宏定义中,形式参数不分配内存单元,不必作类型定义

         在宏定义中,宏名与带参数的括号之间不可以加空格,否则会将空格以后的字符都作为替代字符串的一部分


    2.#include指令

    在一个源文件中可以使用#include指令将另一个源文件的全部内容包含进来

      demo:

    1 # include <stdio.h>
    2 # include "stdio.h"

    上面给出了<> 尖括号 ""和双引号两种形式,它们是有一定的区别的

    1)尖括号

      系统到存放C库函数头文件所在的目录中寻找要包含的文件,这是标准的方式

    2)双引号

      系统先到当前代码文件所在的目录下寻找要包含的文件,如果找不到,再到存放C库函数头文件所在的目录中寻找

    demo:

                                            f1.h

    1 # define P printf
    2 # define S scanf
    3 # define D "%d"
    4 # define C "%c"
    5  

                  f2.cpp

     1 # include <stdio.h>
     2 # include <stdlib.h>
     3 # include "f1.h"
     4 int main ()
     5 {
     6     int a;
     7     P("please input:
    "); //printf 
     8     S(D,&a);//scanf 
     9     P("The number is :
    "); //printf    
    10     P(D,a);// printf 
    11     P("
    "); //printf 
    12     return 0;
    13 }

    f1.h存放宏替换指令

    f2.cpp 使用这些宏指令

  • 相关阅读:
    Node学习之(第二章:http模块)
    Node.js学习(第二章:node核心模块--fs)
    Node.js学习(第一章:Node.js安装和模块化理解)
    Node.js学习(第一章:Node.js简介)
    js控制手机震动
    js发送windows提示信息
    js操作一般文件和csv文件
    js操作indexedDB增删改查示例
    js获取用户实时地理位置
    js处理数值和日期本地化
  • 原文地址:https://www.cnblogs.com/dire/p/5221012.html
Copyright © 2020-2023  润新知