宏定义就是在开始用井号(#)定义一个函数或者是常量,这种定义在编译器中被处理,运算速度快,但使用宏定义时可能会出现一些隐蔽的问题

例如:

#define DATA sizeof(int)

for(int i=cnt;i-DATA>=0;i-=DATA)

乍一看这样做似乎没什么问题,要注意sizeof返回的是一个无符号数,有符号数和无符号数做比较的时候会先把有符号数变成无符号数。而负数的有符号数最高位一定为1,这样就可能会导致数据异常。