zoukankan      html  css  js  c++  java
  • C++Review21_宏和常量

    宏 用于预处理,预处理不是编译,而是编译前对源文件文本的处理,得到真正待编译的文本;

    常用的宏:

    #define :这个宏一般用于定义一个别名,然后预处理时把别名替换成真正的名称,注意这只是文本层面的替换;

    这个宏常用于定义常量;

    #define PI 3.1415

    #define ERROR_POWEROFF -1

    这样其实也起到注释,增强代码可读性的作用;不然对于魔鬼数字-1,没人能知道这代表什么。

    #define宏除了可以用来定义常数之外,还可以定义字符串,尤其是路径;

    #define宏还可以用于定义表达式

    #define SQR(x) x*x

    条件编译宏:

    #ifdef

    #else

    #endif

    这块不作过多介绍了;

    文件包含:

    #include <filename>  //预处理到系统规定的路径中去获得这个文件

    #include "filename"    //应该先在当前目录中查找,如果没找到,则按系统指定的路径查找。

    其他宏以后再讨论;

    ===============================================

    常量:

    定义常量有两种方法:

    C++ 用 const

    C语言用 #define

    const定义常量有以下好处:

    1)const常量有数据类型,宏常量没有数据类型。编译器可以对前者进行类型安全检查,而后者只能进行字符替换。

    2)集成化调试工具可以对const常量进行调试,但是不能对宏常量进行调试。

    #define 定义的常量是全局的。

    如果类中要定义常量,应该使用const修饰数据成员。

    但是要注意const数据成员只在某个对象的生存期内是常量,而对于整个类而言是可变的;
    类可以创建多个对象,不同对象的const值可不同。
    所以不能再类声明中初始化const数据成员。
    class A{
    const int SIZE = 100; //这是错误的
    int array[SIZE]; //也是错误的,SIZE是未知的
    }

    const数据成员初始化只能在类构造函数的初始化表中进行;

  • 相关阅读:
    Megcup 2017 决赛第一题 规则
    折正方体-------------给你出道题
    论公平
    Vue 将一个组件嵌入到另一个组件中
    Vue下的index.html
    Vue下的package.json
    Vue 一些用法
    chkconfig 系统服务管理
    Windows和Linux下的 telnet命令 不是内部或外部命令的解决方案
    JSONPlaceholder
  • 原文地址:https://www.cnblogs.com/grooovvve/p/12382078.html
Copyright © 2011-2022 走看看