你定义了。在程序中是不能改变的。只能在定义的地方修改。程序在预处理期间进行值替换。
C语言在编译时确定宏定义的值 通过-D选项可以控制编译器在编译时的宏定义值,测试例程如下: #include <stdio.h>#ifndef CCC#defineCCC 1024#endifintmain() { printf("%d\n",CCC);return0; } 显然这里面定义了一个宏CCC。 如果使用编译命令: gcc-o a.out main.c 那么编译并执行以后,输出的结果显然是102...
我们仅需要改变一个宏定义,就可以改变整个程序中出现的所有该常量的值。“硬编码的”常量会更难于修改,特别是有时候当他们以稍微不同的形式出现时。(例如,如果一个程序包含一个长度为100的数组,它可能会包含一个从0到99的循环。如果我们只是试图找到所有程序中出现的100,那么就会漏掉99。) 3) 、可以帮助避免前后...
乘法运算先于宏定义的加法,所以出现了 55 . 这个问题,的解决办法是在宏定义表达式两边加上一对括号就可以了。 #define DOUBLE( x) ( ( x ) + ( x ) ) 提示: 所以用于对数值表达式进行求值的宏定义都应该用这种方式加上括号,避免在使用宏时由于参数中的操作符或邻近操作符之间不可预料的相互作用。 例...
但也许后来发现程序所表现的精度有变化,需要改变它的值, 这就需要修改程序中所有的相关数值,这会给我们带来一定的不便,但如果使用宏定义,使用一个标识符来代替,则在修改时只修改宏定义即可,还可以减少输入 3.1415926这样长的数值多次的情况,我们可以如此定义 #define pi 3.1415926,既减少了输入又便于修改,何乐而不...
“方便程序的修改”。使用宏定义可以用宏代替一个在程序中经常使用的常量。注意,是“经常”使用的。这样,当需要改变这个常量的值时,就不需要对整个程序一个一个进行修改,只需修改宏定义中的常量即可。且当常量比较长时,使用宏就可以用较短的有意义的标识符来代替它,这样编程的时候就会更方便,不容易出错。因此,宏...
掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。所以只要换就可以了:把B换成A*A,那么B*B就是A*A*A*A,然后把A换成3+2,结果就是:3+2*3+2*3+2*3+2=23;不知道你理解了没有,如果是这样宏定义A的,那么结果又不一样了,#define A...
1 C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。带参宏定义的一般形式为: #define 宏名(形参表) 字符串在字符串中含有各个形参。带参宏调用的一般形式为: 宏名(实参表);例如:#defineM(y)y*y...
宏属于预处理,在编译之前完成替换,因此你的描述应该是做不到的。其实你如果要定义1000个宏,不如直接定义一次数组,然后在初值表赋值了,然后把该数组的内容再赋值给B。int A[1000]={0x5,0xA,)x20,...};
作用:程序中多次使用TRUE,如果需要对TRUE的值进行修改,只需改动一处就可以了 (2)带参数的宏: #define 宏名 ( 参数表) [宏体]宏定义作用:(1)方便程序的修改 上面的#define TRUE 1就是一个实例 (2)提高程序的运行效率 宏定义的展开是在程序的预处理阶段完成的,无需运行时分配内存,...