宏定义

17 篇文章 1 订阅

宏定义不管在C还是C++中都经常用到,其用法是个比较神奇的东西,宏定义不表示任何类型,同样也表示任何类型,这也是宏定义的一个优点,宏函数类似C++的函数重载,可以用于任何类型,但不进行类型检查,宏定义实际代表的就是一个字符串,比如下面这段代码

#include<iostream>

using namespace std;

#define M int main(

M) {
    cout << "hello world" << endl;
    return 0;
}

看起来就是一段错误的代码,但的的确确是可以编译通过并且运行的, 其输出结果如下:

这里写图片描述

宏定义还有一个优点就是宏定义是不限制作用域的,即使被定义到了一个函数中,在其他函数中仍然能够使用。

#include<iostream>

using namespace std;

#define M int main(

void func() {
#define T 10
}

int print() {
    int a = T;
    cout << "a = " << a << endl;
    return 0;
}

M) {
    print();
    return 0;
}

输出结果如下:

这里写图片描述

这也是明显跟typedef不同之处,typedef是限定作用域的,若typedef在函数1中定义,则不能用在函数2中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值