c 语言宏的用法


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


#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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值