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

    宏定义:

      不带参数的宏:

      定义宏的结构 #define 宏名 字符串 

      #define PI 3.1415926 //使用 PI 代替了3.1415926

    如:

    #define u "hello world"
    int main(int argc, char *argv[]) {
    printf(u);
    return 0;
    }

    运行结果

    若宏定义的内容在字符串内,则不进行替换

    如:

    #include <stdio.h>
    #include <stdlib.h>
    #define Char "this is an example"
    int main(int argc, char *argv[]) {
    char str[30] = "Char is ?";
    printf("%s ",str);//打印出的结果并未进行替换
    return 0;
    }

    运行结果

    带参数的宏

    如:

    #include <stdio.h>
    #include <stdlib.h>
    #define math(a,b) a+b*b 
    int main(int argc, char *argv[]) {
    int x = 1,y = 2;
    printf("%d",math(x,y));
    return 0;
    }

    运行结果

    #include <stdio.h>
    #include <stdlib.h>
    #define math(a,b) (a+b)*b
    int main(int argc, char *argv[]) {
    int x = 1,y = 2;
    printf("%d",math(x,y));
    return 0;
    }

    运行结果

    条件编译

    格式:#if  常数表达式    

                    语句段     //如果条件为真,则该段被编译,否则跳过此段

              #endif

     如:

    #include <stdio.h>
    #include <stdlib.h>
    #define NUM 50
    int main(int argc, char *argv[]) {
    int i = 0;
    #if NUM>50
    i++;
    #endif

    #if NUM == 50
    i = i+50;
    #endif

    #if NUM<50
    i--;
    #endif

    printf("%d",i);
    return 0;
    }

    运行结果

    #include <stdio.h>
    #include <stdlib.h>
    #define NUM 10 
    int main(int argc, char *argv[]) {
    int i = 0;
    #if NUM>50
    i++;
    #endif

    #if NUM == 50
    i = i+50;
    #endif

    #if NUM<50
    i--;
    #endif

    printf("%d",i);
    return 0;
    }

    运行结果

    #include <stdio.h>
    #include <stdlib.h>
    #define NUM 50
    int main(int argc, char *argv[]) {
    int i = 0;
    #if NUM > 50
    i++;
    #else
    #if NUM < 50
    i--;
    #else
    i = i+50;
    #endif
    #endif
    printf("%d",i);
    return 0;
    }

    运行结果

    #include <stdio.h>
    #include <stdlib.h>
    #define NUM 100
    int main(int argc, char *argv[])
    {
    int i = 0;
    #if NUM > 50
    i++;
    #elif NUM == 50
    i = i+50;
    #else
    i--;
    #endif
    printf("%d",i);
    return 0;
    }

    #line命令 __LINE__存放当前编译的行号,__FILE__存放当前编译的文件名,两个关键字的前后都是两个下划线,

    格式

    #line 行号["文件名"]

    例如:

    __LINE__

    #line 22"123.c" //从22开始相加到执行编译的行数
    #include <stdio.h>  //从这行开始起计数为 0
    #include <stdlib.h>  //第1行
                         //第2行
                       //第3行
    int main() {       //第4行
        printf("1当前行号:%d ",__LINE__);//第5行
        printf("3当前行号:%d ",__LINE__);//第6行
        return 0;
    }
    运行结果

    __FILE__

     #line 22"123.c"
    #include <stdio.h>  
    #include <stdlib.h>                 
    int main() {      
        printf("1当前行号:%s ",__FILE__);//当前编译的文件
        printf("3当前行号:%s ",__FILE__);//当前编译的文件
        return 0;
    }

    运行结果

  • 相关阅读:
    数论 UVA 10943
    数论 UVA 11889
    数论 UVA 11388
    UVA 572
    hdu 1016
    poj 1308
    poj 1363
    java web-----servelet
    java IO文件读写例子(OutputStream,InputStream,Writer,Reader)
    java web环境配置类型问题
  • 原文地址:https://www.cnblogs.com/2277098974-qqcom/p/8143336.html
Copyright © 2011-2022 走看看