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

2020-11-23 17:22:44 字数 5796 阅读 8008

1楼:匿名用户

宏是巨大的、大量使用的意思,就是一系列操作的集合,能够无数次重复使用。

宏定义用英文标识为 define macro

excel软件中的宏就是一系列的vb**组合,用sub和end sub包起来的一段**,能够自动完成一系列操作和任务,而且功能很强大。可以编辑窗体和进行人机交互操作,多**操作等等。

“c语言的宏定义”是什么?

2楼:留名在世射手

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

是c提供的三种预处理功能的其中一种。

1、宏名一般用大写。

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

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

4、宏定义末尾不加分号。

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

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

7、宏定义可以嵌套。

8、字符串" "中永远不包含宏。

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

3楼:漫承依月桃

定义一个字符串来代表一个数字,或者一个表达式例如:#define

pi3.1415926

#define

s(x+y*z)

这个宏定义中的#是什么意思

4楼:匿名用户

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

print(4);

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

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

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

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

5楼:匿名用户

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

#include

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

int main()

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

6楼:匿名用户

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

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

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

下面举例说明下:

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

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

7楼:修蒙帅沛山

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

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

resource_base_range(myobj,100);

扩展为:

resource_base_myobj,

resource_bsae_myobj_end=resource_base_myobj

+100-1;

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

什么是宏定义?

8楼:蔷祀

宏定义是高级语言编译器提供的常用语法,其目的是利用某一标识符标识某个文本字符串。在编写程序时,如果程序中反复地使用某个数据或某段程序片段,就可以考虑将这个数据或程序片段定义为宏,然后每个出现该数据或程序片段的地方用宏名替代

选择宏定义来做的好处是程序简洁,可读性好,而且当需要修改这些相同的程序片段时,只要修改宏定义中的字符串即可,不需要修改多处。

扩展资料

参宏定义中#的用法:

#definestr(str) #str

#用于把宏定义中的参数两端加上字符串的""

比如,这里str(my#name)会被替换成"my#name",一般由任意字符都可以做形参,但以下情况会出错:

str())这样,编译器不会把")"当成str()的参数。str(,)同上,编译器不会把","当成str的参数。str(a,b)如果实参过多,则编译器会把多余的参数舍去。

(vc++2008为例)str((a,b))会被解读为实参为:(a,b),而不是被解读为两个实参,第一个是(a第二个是b)。

9楼:桑礼潮风

通俗的讲就是对你常用的值或公式进行事先的定义编译,以优化**吧~还是看下下面的列子,体会下吧~

表达式:

#define

标识符字符串

比如:#define

pi3.1415926

它的意思就是把3.1415926赋值给pi又比如:

#define

a(x,y)

x*y它的意思就是在主函数中若

x=2,y=3,则a(x,y)=6,

因为它宏定义了a(x,y)=x*y。

记住,如果宏定义了,它的值(在整个程序中)是不会变的,除非你对它再一次宏定义,但这样会降低程序的可读性,所以尽量不要重复定义相同的内容。

10楼:忘我之鱼

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)宏不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)

11楼:盍清竹魏雀

一个程序由多个文件组成,特别是有多个头文件组成时一定要用宏,目的是避免互相嵌入造成重复定义,给编译器一个清晰的程序结构。

例如所有的mfc

vc++

的头文件都有这个宏

#if!defined(afx_....

#define

afx_....

...#endif

调用动态联结库要用宏

#pragma....

定义替代字符要用宏,例如

#define

shuzu_daxiao

2000

...float

a[shuzu_daxiao],b[shuzu_daxiao];

编译前编译器会用2000替代所有字符shuzu_daxiao。

如果是一般变量,就不能用宏,例如:

inti,j,k;

void

main(int

n,char

*argv)

这是标准的c的主程序写法。

用void

表示主程序运行终了没有返回值送回操作系统。

如果是int

main(int

n,char

*argv)

主程序运行终了有返回值送回操作系统,主程序内要有return语句。

网上找的希望对你有帮助

12楼:匿名用户

这里有详细的介绍和一些超好用的写法,祝你成为高级编程专家,点击这里

13楼:壹陆南柒陆北

宏定义,别名宏代换,是c提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。

14楼:匿名用户

c语言源程序中,一个字符串可能在程序中多次出现。这时可以将该字符串用一个特定的标识符代替,这种表示方法,称为宏定义。它包括无参宏定义和带参宏定义两类。

15楼:匿名用户

用#define 定义的替换宏函数

在c语言中"宏"是什么意思?

16楼:杨尘一

简单来说:宏定义又称为宏代换、宏替换,简称“宏”。是c提供的三种预处理功能的其中一种。

说明:1、宏名一般用大写

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

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

4、宏定义末尾不加分号;

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

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

7、宏定义可以嵌套

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

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

17楼:萌萌

定义的意思,在c语言中的宏定义就是定义外部变量,内部函数使用exiterm来调用

如:exiterm char c1,c2;

c语言中的宏定义的字是:definec语言中的define宏定义有带参数的和不带参数两中形式,不带参格式是:#define 宏名,字符串带参格式是:

#define 宏名(参数1,参数2,...) 字符串在c语言里宏定义只用来做的宏名替换,而不做语法检查的,因而它不是c语句,所以在宏定义的时候不需要在后面加";"宏也在c里也叫预处理命令,因为宏是在程序编译前先进行字符替换的,所以叫预处理.在c里还有其它的预处理命令如:

#define

#undef

#ifdef等。

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

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

数学中的梯度是什么意思,数学中梯度的定义是什么?

1楼 米兵 梯度gradient 设体系中某处的物理参数 如温度 速度 浓度等 为w,在与其垂直距离的dy处该参数为w dw,则称为该物理参数的梯度,也即该物理参数的变化率。如果参数为速度 浓度或温度,则分别称为速度梯度 浓度梯度或温度梯度。 在向量微积分中,标量场的梯度是一个向量场。标量场中某一点...

角的定义是什么(数学),数学中,角的定义是什么?

1楼 匿名用户 , 角的静态定义 具有公共点的两条射线组成的图形叫做角,这个公共端点叫做角的顶点,这两条射线叫做角的两条边。 角的动态定义 一条射线绕着它的端点从一个位置旋转到另一个位置所形成的图形叫做角,所旋转射线的端点叫做角的顶点,开始位置的射线叫做角的始边,终止位置的射线叫做角的终边 2楼 我...