作者:乔山办公网日期:
返回目录:office365
1、define是宏定义,程序在预处理阶段将用define定义的内容进行了替换。因此在程序运行时,常量表中并没有用define定义的常zhidao量,系统不为它分配内存。而const定义的常量,在程序运行时,存在常量表中,且系统为它分配内存。
2、define定义的常量,预处理时只是直接进行了替换,因此在编译时不能进行数据类型检验。而const定义的常量,在编译时进行严格的类型检验,可以避免出错。
3、define定义表达式时要注意“边缘效应”。
例如:
#defineN1+2;
floata=N/2.0;
按照常规做法,可能会内认为结果是3/2=1.5;
但是实际上,结果应该为1+2/2.0=2.0;
若想要实现3/2,则#defineN(1+2);
即为避免边缘效应,一定要加括号。
扩展资料
C++宏定义
#define命令是C++语言中的一个宏定义命令,它用来将一容个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
1、简单的宏定义:
#define <宏名> <字符串>
例: #define PI 3.1415926
2、带参数的宏定义
#define <宏名> (<参数表>) <宏体>
例: #define A(x) x
这是一个错误的用法,#define f(x) ((x)-1)这个是没问题的,但你意外发现f 后面可以加上一个空格,因为宏定义#define的用法是 #define 标识符 字符串,就是用简单的标识符取代知复杂的字符串,这个字符串可以是表达式,系统认为标识符是一个函数的借口,返回道表达式的值,而返回类型则与主函数中定义的x有关,也可以是一句话(要用双引号括起来,否则系统就会认为是表达式),这样就要以字符串形式输出 关键字+空格+标识版符+空格+字符串,这样了在实现取代作用,如果出现多个空格,就会认为是属于字符串中的空格,但如果没有双引号,就会认为是表达式,明权显这种表达式是不能运算得,于是当使用f时,就会出现一句编译错误,提示无法评估f函数返回值的类型
编译的时候是忽略注释的啊
实测.
无影响.