c 语言宏的用法
来源:互联网 发布:淘宝网购如何防骗技巧 编辑:程序博客网 时间:2024/05/16 18:10
下面是最简单的常量定义的形式,和函数形式,在宏中注意我们要小心空格和运算优先级最好有括号括起来
#include <stdio.h>#define MAX 10#define f(a,b) a+b-1int 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 macropateo@pateo-B86N53X:~/work/study$ ./macro i= 0i= 1i= 2i= 3i= 4i= 5i= 6i= 7i= 8i= 9i= 10--------------------10
下面是针对条件编译
#ifndef IMPORT #define IMPORT <stdio.h>#endif #include IMPORT#define DEBUGint 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 macropateo@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 macropateo@pateo-B86N53X:~/work/study$ ./macro 123
- c 语言宏的用法
- C语言宏的用法
- C语言的assert宏的用法
- C语言宏的高级用法
- C语言宏里#的用法
- C语言宏中"#"和"##"的用法
- c语言宏的一些用法
- C语言宏中"#"和"##"的用法
- C语言宏的各种用法
- C语言宏里#的用法
- C语言中宏的一些用法
- C语言宏定义的用法
- c语言中的宏的特殊用法
- C语言:宏中"#"和"##"的用法
- C语言宏中的#和##的用法
- C语言宏的高级用法
- C语言宏中"#"和"##"的用法
- C语言宏中"#"和"##"的用法
- perl实现多线程
- 连锁零售行业IT运维管理四大困境
- java同步discuz账号
- -swf-version编译器参数设置与playerglobal.swc的关系
- Introduction to Windows Metro Style
- c 语言宏的用法
- KVM 虚拟机在物理主机之间迁移的实现
- [原创]基于NTFS磁盘格式的解析/删除/读写破坏.完整源码
- oracle 删除表结构 及清空回收站
- Oracle几个常用语法[不断补充]
- 在大连做安天技术论坛 GuessMe5
- ASP.NET页面间数据传递的方法
- QTP-读写外部文本文件
- UINavigationController在viewWillAppear函数中pushViewController时的问题和解决