美文网首页
C语言学习1-关于宏定义

C语言学习1-关于宏定义

作者: 中大网安菜鸡本人 | 来源:发表于2018-11-23 18:53 被阅读0次

    https://blog.csdn.net/freewaywalker/article/details/50035923

    #if #ifdef #if defined(x) #endif 种种用法

    怎样才能建立在整个类中都恒定的常量呢?别指望const数据成员了,应该用类中的枚举常量来实现。例如

    class A

    {…

    enum { SIZE1 = 100, SIZE2 = 200}; //枚举常量

    int array1[SIZE1];

    int array2[SIZE2];

    };

    枚举常量不会占用对象的存储空间,它们在编译时被全部求值。枚举常量的缺点是:它的隐含数据类型是整数,其最大值有限,且不能表示浮点数(如PI=3.14159)。sizeof(A) = 1200;其中枚举部长空间。

    #define 比const多的优点在于对类型无要求

    const 与#define的比较

     C++ 语言可以用const来定义常量,也可以用 #define来定义常量。但是前者比后者有更多的优点:

    (1) const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。

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

    #undef 标识符

    用来将前面定义的宏标识符取消定义。

    相关文章

      网友评论

          本文标题:C语言学习1-关于宏定义

          本文链接:https://www.haomeiwen.com/subject/kslrqqtx.html