比如
#define PI=3.141
与
double PI=3.141
和
const PI=3.141
它们之间有什么区别
什么时候应该用哪个个?
#define 好像是什么 “在编译时替换”,是什么意思啊 ,最好说具体点
还有如3楼所说“编译器直接将宏扩展成定义的内容 ”定义的是什么内容?
C/C++中的宏定义是进行符号常量定义,该定义用于定义一种符号信息用来表示一些特殊的信息,使源代码更具有可读性,同时,也可以提高系统的可移植性。宏定义是在编译时进行解释与替换的,实际运行中的代码是没有宏定义符号的。而一般变量或常量的定义在系统运行中,是有自己的内存空间,访问权限,和生存周期的。
宏定义常量
#define PI 3.141变量定义
double PI=3.141 ; //定义一个变量PI,在内存中会给变量PI分配一个空间,其空间中存储了3.141,在使用中,可以随时改变PI值,如:PI=3.1415926;常量定义
const PI=3.141 ; //因为没有写类型,默认为int类型,所以,这里的PI值实际为3常量与变量的差别是:常量一经定义后,就不能再修改!如果在使用中修改PI,则编译或运行时会出错,如VC6报错:error C2166: l-value specifies const object
常量与宏定义常量的区别是: 宏定义会在预处理阶段将用define定义的内容对代码中相应的标识符进行替换(编译期替换,编译后宏消失)。因此程序运行时,常量表中并没有用define定义的常量,系统不为它分配内存。const定义的常量,在程序运行时在常量表中,系统为它分配内存。