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



原创粉丝点击