C语言宏定义-基本使用

C语言宏定义-基本使用

1. 宏定义的基本语法

宏定义分为2类, 不带参数的宏定义 和 带参数的宏定义

1.1 不带参数的宏定义

形式:使用一个指定的标识符来代表一个字符串

#define 标识符 字符串

例如

#define PI 3.14159265

作用:程序中但凡使用到PI的地方全部都会用3.14159265来替换,主要用途使用一个简单标识符来代替一个长的字符串

1.2 带参数的宏定义

形式:带参数的宏定义不是仅仅进行简单的字符串替换,还要进行参数替换

#define 标识符(参数表) 字符串

例如

/**
 * @def CMO_MAX
 * @brief Return larger value of two provided expressions.
 */
#define CMO_MAX(a, b) ((a) < (b) ? (b) : (a))

作用:对带参数的宏定义是这样进行展开置换的在程序中如果有带实参的宏,如上,则按#define指令行中指定的字符串从左到右进行置换。

2. 宏展开过程

gcc -E 只激活预处理,这个不生成文件, 你需要把它重定向到一个输出文件里面。

例如用法

#include <stdio.h>

/* 不带参数宏 */
#define PI 3.14159265
/* 带参数宏 */
#define CMO_MAX(a, b) ((a) < (b) ? (b) : (a))

int main (void)
{
    /* 不带参数宏展开 */
    double pi = PI;

    /* 带参数宏展开 */
    int max_var = CMO_MAX(1, 3);

    printf("hello, pi:%lf, max_var:%d", pi, max_var);

    return (0);
}
// gcc -E hello.c > hello_e.txt
// gcc -E hello.c | more

使用命令 gcc -E hello.c > hello_e.txt, 查看gcc预处理的结果

image-20201113180559093

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值