C宏的用法

前几天参加某公司的笔试,有一道题是用纯C实现一个泛型函数。郁闷了好久用C++模板实现了。

 

宏有如下的特点:

1.与const相比,宏是在预编译的时候完成的

2.define 只做简单的替换,不做类型安全检查

3.使用不当会引起很多问题

 

 

宏的用法:

1.简单的宏定义

#define  MAX 1024

 

2.宏定义功能块

#define MAX(a,b) (a)>(b)?(a):(b)      //比较大小的宏

 

3定义函数实现泛型

#define SORT(Type) void Buble_sort(Type a[],int len) { / bool is_swap=true;/ for(int i=0;i<len&&is_swap;++i)/ {/ is_swap = false;/ for(int j=0;j<len-i;++j)/ {/ if(a[j]>a[j+1])/ {/ Type t;/ t=a[j];/ a[j+1] = a[j];/ a[j]=t;/ is_swap = true;/ }/ }/ }/ } SORT(int); SORT(double); SORT(float); SORT(unsigned int);

 

4.定义类

 

  #define   _DECL_class(name,   element   )/  
  class   df_##nm/  
  {/  
  protected:/  
  element         *pData;/  
  int num;/  
  /  
  void   _resize(int   n);/  
  /  
  public:/  
  nm(   ){};/  
  /  
  int   Count()   const   {   return   num;   }/  
  /};  
   
   
  _DECL_class(   cls_example,   int   );  

你可能感兴趣的:(C宏的用法)