码迷,mamicode.com
首页 > 其他好文 > 详细

C预处理

时间:2020-01-19 15:19:11      阅读:94      评论:0      收藏:0      [点我收藏+]

标签:字母   运算符   结果   span   word   文件的   定义   序号   符号   

#define 

与所有预处理指令一亮,预处理指令#define用#符号作为行的开头,#和指令之间不能有空格,指令可以出现在源文件的任何地方。指令定义的作用域从定义出现的位置开始直到文件的结尾。#define由三部分组成:第一部分为指令#define自身第二部分为所选择的缩略语,这些缩略语称为宏macro ,(宏的名字不能有空格)只能使用字母、数字、下划线,第一个不能是数字,第三部分#define行的其余部分,称为替换列表或主体。

接下来看看代码了解一下吧

#include<stdio.h>
#define two 2
#define ow "aaaaaa "
#define ows"aabbccdd" //通过下划线转到下一行
#define four two*two
#define Px printf("x is %d .\n",x);
#define fmt "x is %d.\n"
int main(void){
int x=two;
px;
x=four;
printf(fmt,x);
printf("%s\n",ow);
printf("%s\n",ows);
printf("wo:ow\n"); return 0; }

运行后:

x is 2.

x is 4.

aaaaaa

aabbccdd

wo:ow

 

C预处理器中的语言符号是宏定义主体的单独的词“word”,用空白字符把这些词分开。例如:

#define fout 2*2

定义中有一个语言符号:即序号2*2但是:#define six 2*3

这个定义中有三个语言符号:2 * 3 

#include<stdio.h>
#define psor(x) printf("The square of "#x"is %d .\n",((x)*(x)));
int main(void){
int y=5;
psor(y);
psor(2+4);
return 0;
}

 运行结果:

The square of y is 25.

The square of 2+4 is 36.

第一次调用宏时,用"y"代替#x,第二次调用宏时,用“2+4”代替#x,

例如第一次调用:The square of y is ((y)*(y));

 

##运算符

和#运算符一样,##运算符可以用于类函数宏的替换部分,另外##还可用于类对象宏的替换部分。这个运算符把两个语言符号组合成单个符号。

接下来看一下代码:

#include<stdio.h>
#define  XNAME(n) x##n
#define  PRINT(n)printf("x" #n"=%d\n",x##n);
int main(void){
int XNAME(1)=14;//变为 int x1=14;
int XNAME(2)=20;//变成 int x2 =20;
PRINT(1); /变成printf("x1=%d n",x1);
PRINT(2);
return 0;
}

 

可变宏: ...和_ _ VA_ARGS_ _

有些函数(如printf())接受可变数量的参数。预定义宏 _ _ VA_ARGS_ _就可以被用在替换部分中,一表明省略号代表什么。

 

#include<stdio.h>
#include<math.c>
#define PR(x,...)printf("Message“#x”:"_ _ VA_ARGS)
int main(void){
double x=48;
double y;
y=sqrt(x);
PR=(1,"x=%g\n",x);
PR=(2,"x=%d.2f,y=%.4f\n",x,y);
retrun 0;
}

 运行结果:

Message 1:x=48

Message 2:x=48.00 y=6.928

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             

C预处理

标签:字母   运算符   结果   span   word   文件的   定义   序号   符号   

原文地址:https://www.cnblogs.com/X404/p/12213784.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!