typedef和#define 介绍和使用

来源:互联网 发布:福州广电网络 编辑:程序博客网 时间:2024/05/23 12:13

typedef和#define


本文主要包含如下内容:

  • typedef和define
    • typedef关键字
    • define


typedef关键字


  typedef,顾名思义,为“类型定义”,可以解释为:将一种数据类型定义为某一个标识符,在程序中使用该标识符来实现相应数据类型变量的定义。在实际编写代码过程使用typedef往往是为了增加代码的可读性。它可以为一串很长的类型名起一个别名,那么使用这个别名可以达到与原类型名相同的效果。

  ex:
  typedef int INT;则INT表示整型
  typedef int* INTPTR;则INTPTR是一个指向整型变量的指针类型

定义结构体类型

    typedef struct {int x; int y;} Point;      Point var_1; // 定义了变量var_1      Point array_1 [10]; // 定义了数组array_1      struct {Point part1; int part2;} cplx; // 定义了复杂类型变量cplx 

定义数组类型

    typedef int MyIntArray [100];     MyIntArray ia;  

  相当于:

    int ia[100];

定义函数指针

    typedef void (*FUNCADDR)(int)   

  此处FUNCADDR是指向这样一个函数的指针,该函数的返回值为void类型,函数有一个int型的参数。

定义类类型

    typedef class {      private:      int a;      public:      int b;      } MyClass;

#define


  应尽量减少#define的使用,即宁可以编译器替换预处理器。

  对于单纯常量,最好以const对象或enums替换#define。

  对于形似函数的宏,最好改用inline函数替换#define。

用const替换:

const char* const authorName = "Scott Meyers";const std::dtring authorName("Scott Meyers");class GamePlayer{    private:        static const int NumTurns = 5;         int scores(NumTurns);}

用enum替换:

class GamePlayer{    private:        enum { NumTurns = 5 };        int scores(NumTurns);}

用inline替换:

template <typename T>inline void callWithMax(const T& a, const T& b){    f(a > b ? a : b);}
原创粉丝点击