首页 > 代码库 > C语言学习——宏定义
C语言学习——宏定义
1.简单的宏定义
#define <宏名> <字符串>
例:#define LEN 0.5
2.带参数的宏定义
#define <宏名> (<参数表>) <宏体>
例:#define Fun(para) para*2
3.实例分析
1 #define VALUE 2+2
2 void main()
3 {
4 int n=VALUE*VALUE;
5 printf("%d",n);
6 }
这段代码的输出是多少呢?16?也许会让你有点意外,结果是8。原因就是预处理器在处理C源程序文件中出现的对宏的引用的时候只是进行简单的替换与展开,并不进行任何的计算处理。所以对第4 行代码展开后是n=2+2*2+2,结果是8。要想让结果是16,只需要将宏定义作如下调整即可。
#define VALUE (2+2)
在带参数的宏定义中也会出现类似的问题。
#define Fun(x) x*x
void main()
{
int n=Fun(2+2);
printf("%d",n);
}
这段代码的输出依然是8。原因如上。
4.三个符号:#,##,#@
#define Conn(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
x##y:表示x连接y.
如:int n=Conn(12,89);n的结果是1289;
char* str=Conn("abc","der");str的结果是str="abcder";
#@x:表示给x加上单引号,结果返回一个const char。
#x :表示给x加上双引号,结果返回一个字符串。
C语言学习——宏定义
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。