‘壹’ c语言的宏定义有哪些技巧
(一)宏定义中的##
连接符与#
符
##
连接符号由两个井号组成,其功能是在带参数的宏定义中将两个子串(token)联接起来,从而形成一个新的子串。但它不可以是第一个或者最后一个子串。所谓的子串(token)就是指编译器能够识别的最小语法单元。具体的定义在编译原理里有详尽的解释,但不知道也无所谓。同时值得注意的是#符是把传递过来的参数当成字符串进行替代。下面来看看它们是怎样工作的。这是msdn上的一个例子。
假设程序中已经定义了这样一个带参数的宏:
#define
paster(
n
)
printf(
"token"
#n
"
=
%d",
token##n
)
同时又定义了一个整形变量:
int
token9
=
9;
现在在主程序中以下面的方式调用这个宏:
paster(
9
);
那么在编译时,上面的这句话被扩展为:
printf(
"token"
"9"
"
=
%d",
token9
);
注意到在这个例子中,paster(9);中的这个”9”被原封不动的当成了一个字符串,与”token”连接在了一起,从而成为了token9。而#n也被”9”所替代。
可想而知,上面程序运行的结果就是在屏幕上打印出token9=9
(二)"\"与一个较长占多行的宏
宏定义中允许包含两行以上命令的情形,此时必须在最右边加上"\"且该行"\"后不能再有任何字符,连注释部分都不能有,下面的每行最后的一定要是"\","\"后面加一个空格都会报错,更不能跟注释。
#define
exchange(a,b)
{\
int
t;\
t=a;\
a=b;\
b=t;\
}
‘贰’ c语言中的宏定义是什么意思可不可以详细的解释一下~
宏定义又称为宏代换、宏替换,简称“宏”。
格式:
#define
标识符
字符串
其中的标识符就是所谓的符号常量,也称为“宏名”。
预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。
掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。
即在对相关命令或语句的含义和功能作具体分析之前就要换:
例:
#define
pi
3.1415926
把程序中出现的pi全部换成3.1415926
‘叁’ c语言宏定义
宏定义又称为宏替换,C语言中的宏定义只是简单的字符串替换而已。
比如
define
N
1000
在程序中遇到N就自动把N替换成1000,N不是一个变量,不能赋值。
如果你写N=1;
相当于写1000=1;
这编译是通不过的,所以你使N的值改变是做不到的。
N只是一个要被替换的记号而已,连变量也不是。
‘肆’ 在C语言中 宏定义是什么
在C语言源程序中,允许用一个标识符来表示一个字符串,称为宏,宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的。宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。
(4)c语言学习宏定义扩展阅读:
宏(Macro),是一种批量处理的称谓。计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式。
计算机语言如C语言或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。
‘伍’ C语言宏定义
宏定义是完完全全地纯替换,并且不能自动添加小括号的
因此 M*M=N+1*N+1=2*N+1=5
如果 #define M (N+1) 加上小括号
M*M = (N+1)*(N+1)=3*3=9 输出结果就变成9了
同理 PP(N, N*M) = N*M+N*M*(N*M-M)
=N*N+1+N*N+1*(N*N+1-N+1)
=2*2+1+2*2+(2*2+1-2+1)=4+1+4+4=13
最后州绝printf("")引号内的内容是完全输出的,编译器不会替悔迹拆换其中的AB
想输出AB的值"James"可以碧枣改为:
printf("Well!My name is %s\n", AB);
‘陆’ 在C语言学习中什么叫宏定义
宏定义是高级语言编译器提供的常用语法,其目的是利用某一标识符标识某个文本字符串。在编写程序时,如果程序中反复地使用某个数据或某段程序片段,就可以考虑将这个数据或程序片段定义为宏,然后每个出现该数据或程序片段的地方用宏名替代,这样做的好处是程序简洁,可读性好,而且当需要修改这些相同的程序片段时,只要修改宏定义中的字符串即可,不需要修改多处。
‘柒’ c语言 宏定义
宏定义又称为宏代换、宏替换,简称“宏”。
掌握"宏"概念的关键是“换”,一切以换为前提。
举个例子:#define PI 3.14
就是把程序中出现的PI全部换成3.14,这是我们数学中的π=3.14
所以宏定义#define f(x,y) printf(x,y)意思就是说
当代码中遇到f(x,y)就它换成printf(x,y)
当引用 f("%d\n",m);的时候,"%d\n"相当于上面的x,m相当于上面的y。
所以 f("%d\n",m);就被替换为printf("%d\n",m);了
明白了嘛?
‘捌’ c语言中的“宏”是指什么
是一种批量处理的称谓。计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。
“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。
计算机语言如C语言或 汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。
在Objective-C语言源程序中,允许用一个标识符来表示一个字符串,称为宏,被定义为宏的标识符称为宏名。在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去替换,这称为宏替换或宏展开。
宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的。在Objective-C语言中,宏分为有参数和无参数两种。
(8)c语言学习宏定义扩展阅读
A类宏是用G65 Hxx P#xx Q#xx R#xx或G65
Hxx P#xx Qxx
Rxx格式输入的,xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM #xx就是变量号,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量。
一般OTD系有#0~#100~#149~#500~#531.关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据。我们如果说#100=30那么现在#100地址内的数据就是30了。
B类宏能完成某一功能的一系列指令像子程序那样存入存储器,用户可以设定M、S、T、G代码调用它们,使用时只需给出这个指令代码就能执行其功能,也可以像调用子程序一样使用。
‘玖’ “C语言的宏定义”是什么
宏定义又称为宏代换、宏握族野替换,简称“宏”。
是段喊C提供的三种预处理功能的其中一种。
‘拾’ C语言宏定义
宏定义又称为宏替换,c语言中的宏定义只是简单的字符串替换而已。
比如
define
n
1000
在程序中遇到n就自动把n替换成1000,n不是一个变量,不能赋值。
如果你写n=1;
相当于写1000=1;
这编译是通不过的,所以你使n的值改变是做不到的。
n只是一个要被替换的记号而已,连变量也不是。