zoukankan      html  css  js  c++  java
  • C预处理

    #define 

    与所有预处理指令一亮,预处理指令#define用#符号作为行的开头,#和指令之间不能有空格,指令可以出现在源文件的任何地方。指令定义的作用域从定义出现的位置开始直到文件的结尾。#define由三部分组成:第一部分为指令#define自身第二部分为所选择的缩略语,这些缩略语称为宏macro ,(宏的名字不能有空格)只能使用字母、数字、下划线,第一个不能是数字,第三部分#define行的其余部分,称为替换列表或主体。

    接下来看看代码了解一下吧

    #include<stdio.h>
    #define two 2
    #define ow "aaaaaa "
    #define ows"aabb
    ccdd" //通过下划线转到下一行
    #define four two*two
    #define Px printf("x is %d .
    ",x);
    #define fmt "x is %d.
    "
    int main(void){
    int x=two;
    px;
    x=four;
    printf(fmt,x);
    printf("%s
    ",ow);
    printf("%s
    ",ows);
    printf("wo:ow "); return 0; }

    运行后:

    x is 2.

    x is 4.

    aaaaaa

    aabbccdd

    wo:ow

    C预处理器中的语言符号是宏定义主体的单独的词“word”,用空白字符把这些词分开。例如:

    #define fout 2*2

    定义中有一个语言符号:即序号2*2但是:#define six 2*3

    这个定义中有三个语言符号:2 * 3 

    #include<stdio.h>
    #define psor(x) printf("The square of "#x"is %d .
    ",((x)*(x)));
    int main(void){
    int y=5;
    psor(y);
    psor(2+4);
    return 0;
    }
    

     运行结果:

    The square of y is 25.

    The square of 2+4 is 36.

    第一次调用宏时,用"y"代替#x,第二次调用宏时,用“2+4”代替#x,

    例如第一次调用:The square of y is ((y)*(y));

    ##运算符

    和#运算符一样,##运算符可以用于类函数宏的替换部分,另外##还可用于类对象宏的替换部分。这个运算符把两个语言符号组合成单个符号。

    接下来看一下代码:

    #include<stdio.h>
    #define  XNAME(n) x##n
    #define  PRINT(n)printf("x" #n"=%d
    ",x##n);
    int main(void){
    int XNAME(1)=14;//变为 int x1=14;
    int XNAME(2)=20;//变成 int x2 =20;
    PRINT(1); /变成printf("x1=%d n",x1);
    PRINT(2);
    return 0;
    }

    可变宏: ...和_ _ VA_ARGS_ _

    有些函数(如printf())接受可变数量的参数。预定义宏 _ _ VA_ARGS_ _就可以被用在替换部分中,一表明省略号代表什么。

    #include<stdio.h>
    #include<math.c>
    #define PR(x,...)printf("Message“#x”:"_ _ VA_ARGS)
    int main(void){
    double x=48;
    double y;
    y=sqrt(x);
    PR=(1,"x=%g
    ",x);
    PR=(2,"x=%d.2f,y=%.4f
    ",x,y);
    retrun 0;
    }
    

     运行结果:

    Message 1:x=48

    Message 2:x=48.00 y=6.928

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 

  • 相关阅读:
    Linux date自己实现代码
    Linux常用指令
    awk getline命令
    文档资料记录
    数学之美番外篇:平凡而又神奇的贝叶斯方法
    最小二乘法(ZZ)
    SpringMVC简单使用教程
    Oracle设置序列方法
    Bootstrap Table的使用详解
    Html中div块居中显示
  • 原文地址:https://www.cnblogs.com/X404/p/12213784.html
Copyright © 2011-2022 走看看