ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c: macro define 复杂的宏定义

2022-07-03 12:00:37  阅读:147  来源: 互联网

标签:定义 macro SAY printf include define


 

 

c: macro define 复杂的宏定义

 

 

 

 

一、源码

 

[root@rockylinux tmp]# cat macro_define.c 
/**
 * 宏命定义的注意事项:
 *      1、带有参数的宏,参数使用时需要写在"()"之中,这样在宏展开时不会改变设计时的运算级别,保证结果正确;
 *              举例:#define MAX_INT(x,y) (x)>(y)?(x):(y)
 *      2、多行合并为一行(代码换行):当“宏定义”内容超过一行时,在语句末尾用"\"换行,空行也要添加"\";
 *
 *      3、多行代码,可以使用"{}"和"()"。 
 *
 *
 */

#include<stdio.h>
#include<stdlib.h>


#define MAX_USER() 20


#define SAY(x,y) \
                {\
                        printf("SAY:\t%s\n", (x)); \
                        printf("SAY:\t%s\n", (y)); \
                }


#define BOOK(x,y) {\
        printf("book_name=%s, \tbook_price=%s\n", (x), (y));\
        }


#define LOOP(x) {       \
                        if((x)<=1){ exit(1);}\
                        int max = (x);\
                        for( int i=0; i<max; i++ ) printf("LOOP:\t\tcount=%d\n",i);\
                }


void msg()
{
        for(int i=0; i<MAX_USER(); i= i + 2)
        printf("%d\t\tmax_user=%d,\tcurrent=%d\n", i/2, MAX_USER(), i);
}


int main(int argc, char *argv[])
{
        LOOP(10);
        BOOK("Gangtie shi zenyang lianchengde", "23.5");
        SAY("hello world!", "hello houdini19.");
        msg();

        return 0;
}
[root@rockylinux tmp]# 
[root@rockylinux tmp]# 
[root@rockylinux tmp]# ./macro_define 
LOOP:           count=0
LOOP:           count=1
LOOP:           count=2
LOOP:           count=3
LOOP:           count=4
LOOP:           count=5
LOOP:           count=6
LOOP:           count=7
LOOP:           count=8
LOOP:           count=9
book_name=Gangtie shi zenyang lianchengde,      book_price=23.5
SAY:    hello world!
SAY:    hello houdini19.
0               max_user=20,    current=0
1               max_user=20,    current=2
2               max_user=20,    current=4
3               max_user=20,    current=6
4               max_user=20,    current=8
5               max_user=20,    current=10
6               max_user=20,    current=12
7               max_user=20,    current=14
8               max_user=20,    current=16
9               max_user=20,    current=18
[root@rockylinux tmp]# 
[root@rockylinux tmp]# 

  

 

标签:定义,macro,SAY,printf,include,define
来源: https://www.cnblogs.com/lnlidawei/p/16439539.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有