预处理指令
就程序性能而言,预处理指示(所有以#
开头的东西)是没有代价的,因为它们在程序编译前被解决了。
#if
指令用于支持多平台或同一个源代码的多种配置。#if
比if
更高效,因为#if
在编译时解析,而if
在运行时。
在用于定义常量时,#define
等价于const
定义。例如,#define ABC 123
与const int ABC = 123;
一样高效,因为在大多数情形里,优化的编译器会用值替换一个整数常量。不过,在某些情形里,const int
声明需要内存空间,而#define
不需要内存空间。浮点常量总是需要内存空间,即使没有命名。在用作宏时,#define
有时比函数更高效。参考用宏定义代替函数。
命名空间
就执行速度而言,使用命名空间没有代价。
欢迎交流