从宏的几种用法来说说宏的具体应用范围:
1、编译器参数和条件编译
2、定义常数
3、宏函数
一个一个说:
1、编译器参数和条件编译
这个没别的选择,绝大多数C编译器都是通过define某些宏(或者宏的值)来告知代码编译平台/硬件平台的。
同时,Makefile或者其它编译脚本希望传递某些编译参数给代码的几乎唯一方式就是宏,所以这是宏最重主要的用途。头文件里大量使用的#ifdef _XXXX_H_ 也是类似用途。
如果说普通宏函数什么的可以被替代的话,条件编译这些是很难被别的方法取代的。
避免定义宏 用全局变量代替 区别在于宏定义没有类型
比如宏定义#define pi 3.1415926这里的pi并没有类型
而全局变量放在主函数的前面 double pi=3.1415926;
建议你少用宏定义,因为宏定义存在很强的安全隐患,没有类型的变量当然在很
多时候会造成很多错误了,而且所有的宏定义都可以用其他的方式代替,一般情
况下更简便,只不过大多初学者以为宏定义看起来似乎很酷,所以初学的时候都
喜欢用,其实现在基本上已经没什么人用宏定义了,用了宏定义的程序健壮性不
行