@浔阳渔夫:应该是B或者C吧,你可以用代码验证下.
#define MAX(a, b) (((a)>(b)) ? (a) : (b)) int max(int a, int b) { if (a > b) return a; else return b; } int main(void) { float a, b, c; a = 1.5; b = 4.7; c = MAX(a, b); // 展开后:c = (((a)>(b)) ? (a) : (b)); printf("c = %d.\n"...
define a的形式只是定义了宏名a,可以认为a只是一个标志,可配合#ifdef或#ifndef进行条件编译等操作。define a 0的形式是定义宏名a代表值0,编译之前代码中遇到单独的宏名a就会进行替换展开。另外,即使定义宏也推荐全用大写字幕,小写留给变量和函数名。
define A B 预处理时将文中的 A 全部替换成为 B 所以,编译的时候,编译的是 B 。 define A 3 intk=A; 则预处理后 intk=3; 然后进行编译。
#define C(x) #x 如果我们假设x=1,那么A(1)就是1,B(1)就是‘1’,C(1)就是”1“ 4. define 的多行定义 #define可以进行多行定义,虽然看起来有点蛋疼,但是确实是一个灰常经典而且在设备驱动代码中经常要用到的一个方法,格式如下: #define MACRO(arg1,arg2) do { ...
1 1、概念#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。(1)简单的宏定义:#define<宏名> <字符串>例:#define PI 3.1415926(2) 带参数的宏定义#...
#define C(x) #x 如果我们假设x=1,那么A(1)就是1,B(1)就是‘1’,C(1)就是”1“ 4. define 的多行定义 #define可以进行多行定义,虽然看起来有点蛋疼,但是确实是一个灰常经典而且在设备驱动代码中经常要用到的一个方法,格式如下: #define MACRO(arg1,arg2) do { ...
宏定义 define a b把b当成a 之后的代码里相当于直接复制
1#define: #define a 10其中a不定类型,可整数,浮点数,字符串,但此后不可以在a=100赋值 2.宏: #define ADD(x,y) ((x)+(y)) 在main函数中引用是这样的: int c=ADD(a,b);//等价于 int c=((a)+(b)) 最后十分感谢你可以耐着性子把它读完和我可以坚持写到这里,送几句话,对你,也对我:...
#define pin(int*);pin a,b;int* a,b;/*本意是a和b都是int型指针,但是实际上变成int* a,b;a是int型指针,而b是int型变量。这是应该使用typedef来代替define,这样a和b就都是int型指针了。*/ 2、带参数的宏 #define标识符(x1,x2,x3...xn) 替换列表 (注意:x1,x2,x3..是宏的...