C语言中用到宏定义的地方很多,起初我一般仅仅把它当作一个使程序具有通用性的一个工具。但是,它的意义并不仅仅在此。在某种意义上其还可以起到函数的作用。
例如:#define MIN (a)<>注意一点。
函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以危险性高(在撒上面例子中括号的大量使用也是为了减少危险性);此外,使用函数式宏定义编译生成的目标文件会比较大;但因为省去了函数的调用,返回,释放,所以效率比自定义函数高。所以在使用中务必要小心,否则很容易弄巧成拙导致较低的代码执行效率。
总而言之,函数占用了时间,宏函数占用了空间。在不同的场合下合理的做出抉择才能让自己的代码高效起来。
联系客服