您的位置:首页 > 其它

c 语言宏的用法

2012-08-07 11:15 190 查看
下面是最简单的常量定义的形式,和函数形式,在宏中注意我们要小心空格和运算优先级最好有括号括起来

#include <stdio.h>

#define MAX 10

#define f(a,b)  a+b-1

int main(){
int i;
for(i = 0 ;i <= MAX ;i++)
{
printf("i=   %d\n",i);
}

printf("--------------------\n");

printf("%d\n",f(5,6));

}

pateo@pateo-B86N53X:~/work/study$ cc macro.c -o macro
pateo@pateo-B86N53X:~/work/study$ ./macro
i=   0
i=   1
i=   2
i=   3
i=   4
i=   5
i=   6
i=   7
i=   8
i=   9
i=   10
--------------------
10


下面是针对条件编译

#ifndef IMPORT
#define IMPORT <stdio.h>
#endif

#include IMPORT

#define DEBUG

int main(){
#ifdef DEBUG
printf("%s\n" , "debug");
#else
printf("%s\n" , "not debug");
#endif
printf("%s\n" , "runing");

printf("%s\n" , "-------------------------------");

#undef DEBUG

#ifdef DEBUG
printf("%s\n" , "debug");
#elif defined DEBUG
printf("%s\n" , "defined DEBUG");
#endif
#define DEBUG
printf("%s\n" , "define DEBUG");

printf("%s\n" , "-------------------------------");

}


#include<stdio.h>

main()
{
#ifdef DEBUG
printf("yes\n");
#endif
#ifndef DEBUG
printf("no\n");
#endif
}


特殊的

#include<stdio.h>
int main()
{
printf("%s\n",__FILE__);
printf("%d\n",__LINE__);
printf("%d\n",__DATE__);
printf("%d\n",__STDC__);
printf("%d\n",__TIME__);
return 0;
}


总结

指令             用途
#           空指令,无任何效果
#i nclude    包含一个源代码文件
#define     定义宏
#undef      取消已定义的宏
#if         如果给定条件为真,则编译下面代码
#ifdef      如果宏已经定义,则编译下面代码
#ifndef     如果宏没有定义,则编译下面代码
#elif       如果前面的#if给定条件不为真,当前条件为真,则编译下面代码
#endif      结束一个#if……#else条件编译块
#error      停止编译并显示错误信息

#用法:出现在宏定义中的#运算符把跟在其后的参数转换成一个字符串。有时把这种用法的#称为字符串化运算符

#include<stdio.h>

#define PASTE(n) "liaojianguo age="#n

main()
{
printf("%s\n",PASTE(29));
}
pateo@pateo-B86N53X:~/work/study$ cc macro.c -o macro
pateo@pateo-B86N53X:~/work/study$ ./macro
liaojianguo age=29


##用法:##运算符用于把参数连接到一起。预处理程序把出现在##两侧的参数合并成一个符号
#include<stdio.h>

#define NUM(a,b,c) a##b##c

main()
{
printf("%d\n",NUM(1,2,3));

}
pateo@pateo-B86N53X:~/work/study$ cc macro.c -o macro
pateo@pateo-B86N53X:~/work/study$ ./macro
123
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  语言 c import date file