c 语言宏的用法
2012-08-07 11:15
190 查看
下面是最简单的常量定义的形式,和函数形式,在宏中注意我们要小心空格和运算优先级最好有括号括起来
下面是针对条件编译
特殊的
总结
#用法:出现在宏定义中的#运算符把跟在其后的参数转换成一个字符串。有时把这种用法的#称为字符串化运算符
#include<stdio.h>
#define PASTE(n) "liaojianguo age="#n
main()
{
printf("%s\n",PASTE(29));
}
##用法:##运算符用于把参数连接到一起。预处理程序把出现在##两侧的参数合并成一个符号
#include<stdio.h>
#define NUM(a,b,c) a##b##c
main()
{
printf("%d\n",NUM(1,2,3));
}
#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
相关文章推荐
- Go语言中append函数用法分析
- C 语言中sprintf的用法
- 脚本语言lua笔记(3)table表的用法
- C语言指针用法详解(二) 指针的算术运算
- EJB3.0 查询语言JPQL用法
- Go语言中slice的用法实例分析
- Go语言map字典用法实例分析
- Go语言”奇怪用法“有哪些?
- C语言中strlen函数功能及用法
- [置顶] 【R语言数据导出txt】 write.table 函数用法
- 语言模型srilm基本用法
- C语言基础(九)结构体、补充typedef用法
- 关于Javascript语言中this关键字(变量)的用法
- HQL语言 like 用法
- C/C++语言中const的用法
- XCODE 4.5 IOS多语言设置 及NSLocalizedString和NSLocalizedStringFromTable的用法。
- PERL 语言中的q,qw,qr,qx,qq......符号用法总结
- go 语言学习 – 包的用法
- C 语言中可变参数的用法(两个简单的小实例)
- go语言map的复杂用法