这个宏定义中的是什么意思这个宏定义的函数是什么意思?30

2021-03-05 10:35:32 字数 4159 阅读 9252

1楼:匿名用户

#x中的#是字符串化运算符,作为是把参数x字符串化,即用双引号包围,例如,在这个程序中:

print(4);

参数4经过宏替换并字符串化之后,就成了:

printf("the no. " "4" ",is");

由于相邻的字符串会自动被连接,所以,它最终相当于:

printf("the no. 4 ,is");

2楼:匿名用户

在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。

#include

#define paster( n ) printf( "token " #n" = %d\n ", token##n )

int main()

输出为[leshy@leshy src]$ ./a.outtoken 9 = 10

3楼:匿名用户

# 本身为指令 没有其他意义/也没有其他效果# 号必须是该行除了任何空白字符外的第一个字符。预处理指令就是以#号开头的**行。

# 后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。

整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源**做某些转换。

下面举例说明下:

形式为: #define 标识符 字符串.

其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令.。

4楼:修蒙帅沛山

\的作用就是把换行符也作为定义的一部分,这样编译程序会认为宏定义的逻辑行还没有结束,而把后续的物理行仍作为定义的一部分继续处理,以此可把一个定义分多行写完。

例如在对下例的语句扩展上述宏时,会变成后面的样子:

resource_base_range(myobj,100);

扩展为:

resource_base_myobj,

resource_bsae_myobj_end=resource_base_myobj

+100-1;

即同时设置了两个变量的值。

这个宏定义的函数是什么意思? 30

5楼:匿名用户

很难详细..因为f是个指针..其类型应该是个自定义类

你必须知道f的类型的声明或注释..才知道什么意思

6楼:匿名用户

就是用这个工具自己编写一些程序,批处理你的word,excel中的数据,减少你敲击键盘的数量。当然这个功能一般不要用,除非你非常懂~~否则你的word,excel中的数据可鞥会出现不可知的错误~~~~

下面是最权威的解释:

1.不带参数的宏定义:

宏定义又称为宏代换、宏替换,简称“宏”。

格式:#define 标识符 字符串

其中的标识符就是所谓的符号常量,也称为“宏名”。

预处理(预编译)工作也叫做宏:将宏名替换为字符串。

掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。

即在对相关命令或语句的含义和功能作具体分析之前就要换:

例:#define pi 3.1415926

把程序中出现的pi全部换成3.1415926

说明:(1)宏名一般用大写

(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义

(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。

(4)宏定义末尾不加分号;

(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。

(6)可以用#undef命令终止宏定义的作用域

(7)宏定义可以嵌套

(8)字符串" "中永远不包含宏

(9)宏定义不分配内存,变量定义分配内存。

2.带参数的宏:

除了一般的字符串替换,还要做参数代换

格式:#define 宏名(参数表) 字符串

例如:#define s(a,b) a*b

area=s(3,2);第一步被换为area=a*b; ,第二步被换为area=3*2;

类似于函数调用,有一个哑实结合的过程:

(1)实参如果是表达式容易出问题

#define s(r) r*r

area=s(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b;

正确的宏定义是#define s(r) (r)*(r)

(2)宏名和参数的括号间不能有空格

(3)宏替换只作替换,不做计算,不做表达式求解

(4)函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存

(5)宏的哑实结合不存在类型,也没有类型转换。

(6)函数只有一个返回值,利用宏则可以设法得到多个值

(7)宏使源程序变长,函数调用不会

(8)宏不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)

7楼:戊婧栋合乐

(volatile

uint16

*)0x41ff----转成指向一个uint16类型的指针(*((volatile

uint16

*)0x41ff))----前面加个*就是指针的表示了一般用在寄存器地址为0x41ff定义上,volatile这个是亮点,注意下

c语言中宏定义是什么意思?

8楼:

形式:#define《宏标志》《字符串》

例如 #define pi 3.14159

表示在以下的程序中 pi 课代替3.14159

9楼:匿名用户

就是给一些常用到的参数给一个值,在后面用到这个参数时就用这个宏标志代替旧可以了。旧比如楼上说的pi,每次都输入3.1415926比较麻烦,宏定义后就可以用pi代替3.

1415926了。

10楼:永恒求知者

说白了,就是文本处理,没那么复杂

11楼:业令郦雪峰

设定a=b+c,则在下面语句中所有的a都会被替换成b+c

12楼:腾昌休秋芸

##用来连接前后两个参数,把它们变成一个字符串,比如bdbg_object_id(abc)可解释为extern

const

char

bdbg_id_unused_abc

13楼:逯昕修运晟

举一个小例子:

#include

#define

pi3.1415926

intmain()

上面的这个

14楼:霜萝越易云

宏定义 就这样理解 程序后面所有的x 都被转成你设定的值

这些宏定义是什么意思

15楼:匿名用户

宏定义,相当于在后面程序中,所有遇到宏定义的地方,直接用后面的式子替代。如

bm定义为 #define bm(n) (1 << (n))

在后面出现bm(n)的地方,就是直接用 (1 << (n))替换。

bm(1),直接就是执行把1左移一位。

1、val是一个参数,就是给端口赋值的变量参数。

2、^:按位“异或”——仅当两个操作数不同时,相应的输出结果才为1,否则为0。

st( p##port##_##pin## ^= 1; )表示对应的端口pin脚是1时,表达式结果为0,是0时,表达式结果为1。

预定义运算与函数中运算符的运算是一样的,关键在于灵活掌握运算符的含义与使用。

3、表示dir的值与bm(pin)“相或”,结果赋值给dir;

4、表示dir的值与bm(pin)的按位求反的值“相与”,结果赋值给dir。

16楼:匿名用户

##是连接符,即p##port##dir =pportdir。不是dir,而是pportdir,pportdir为cc2530方向控制寄存器port可由具体数字替代,,如要设置p1.1位输出方式,即port=1,pin=1即可(根据无线点亮小灯具体函数)。

可参看cc2530 datasheet.

宏定义中的“宏”字是什么意思,“C语言的宏定义”是什么?

1楼 匿名用户 宏是巨大的 大量使用的意思,就是一系列操作的集合,能够无数次重复使用。 宏定义用英文标识为 define macro excel软件中的宏就是一系列的vb 组合,用sub和end sub包起来的一段 ,能够自动完成一系列操作和任务,而且功能很强大。可以编辑窗体和进行人机交互操作,多 ...

c语言中宏定义是什么意思,在C语言中 宏定义是什么?

1楼 形式 define《宏标志》《字符串》 例如 define pi 3 14159 表示在以下的程序中 pi 课代替3 14159 2楼 匿名用户 就是给一些常用到的参数给一个值,在后面用到这个参数时就用这个宏标志代替旧可以了。旧比如楼上说的pi,每次都输入3 1415926比较麻烦,宏定义后就...

数学,有定义是什么意思,数学,有定义是什么意思? 20

1楼 匿名用户 数学定义是,作为一般的思维形式的判断与推理,以定理 法则 公式的方式表现出来。 数学概念是构成定义的基础。 值得注意的是,定义是一种表述,并非自主认知。 譬如说,定义x y十z 2楼 匿名用户 数学里面其实有很多定义或者是定理都已经证明过的,可以直接使用的。 一般会有的直接考概念,有...