• C语言预处理命令


    以#开头的语句称为预处理语句

    #include

    #include<头文件名>  //先从默认目录搜索头文件
    #include"头文件名"  //先从文件所在目录搜索头文件

    #define

    不带参

      #define 宏名 字符串  //以字符串内容代替宏名(展开),可嵌套

    #define PI 3.1415926
    //other code
    double a=PI;    //展开后该行为:double a=3.1415926;

    带参宏

      #define 宏名(形参列表) 字符串  //定义

      宏名(实参列表)  //调用时展开的同时用实参代替形参

    #define ADD(x,y) x+y
    //other code
    ADD(5,6)    //展开后该行为:5+6

    操作符#和##

      #操作符可将参数转为字符串

    #define A(x) #x
    //other code
    A(!@#D"F"AS123);    //展开后该行为:"!@#D"F"AS123"

      ##可将两个参数拼接起来

    #define B(x,y) x##y
    //other code
    int x=B(23,33)     //展开后该行为:int x=2333

      注意:含有#或##的宏命令不支持嵌套。其内的其他宏不会被展开。

      解决方法:加一层转换宏

    #undef

      取消#define

    #if ... #elif ... #else ...#endif

      功能参考if...elseif...else,但判断条件必须为常量表达式,不能为变量

      #if 常量表达式

        代码

      #elif 常量表达式

        代码

      #elif 常量表达式

        代码

      ...

      #else

        代码

      #endif

    #ifdef ... #else ... #endif

      如果宏被定义过就编译其下的代码

      #ifdef 宏名

        代码

      #else

        代码

      #endif

    #ifndef ... #else ... #endif

      如果宏没被定义过就编译其下的代码

      #ifndef 宏名

        代码

      #else

        代码

      #endif

    用宏有风险,装逼需谨慎

  • 相关阅读:
    360抢票王验证码自动识别真的那么牛吗?
    wpf 的各个template
    HTML/CSS实现的一个列表页
    泛型约束和利用反射修改对象属性的值
    KindEditor富文本编辑器, 从客户端中检测到有潜在危险的 Request.Form 值
    检查对象是否为NULL或者为Empty
    【笔记】WPF实现ViewPager引导界面效果及问题汇总
    【笔记】WPF之模板控件应用
    【笔记】W3C CSS关键属性
    【转】Web标准中的常见问题
  • 原文地址:https://www.cnblogs.com/Dumblidor/p/6480949.html
Copyright © 2020-2023  润新知