c++预定义的一些宏以及用法

CPlusPlus中的预定义和宏定义

宏定义中的变长参数以及__VA_ARGS__宏

示例:

//定义
#define LOG(...) {\
    printf("%s : Line %d:\t", __FILE__, __LINE__); \
    printf(__VA_ARGS__);\
    printf("\n"); \
}

//调用
int x = 3;
LOG("x = %d", x);

//输出
..\main.cpp : Line 16:  x = 3

可以看到__FILE__展开成成字符串,指示出当前代码所在文件。__LINE__展开成int型,指示当前所在行号。__VA_ARGS__被"…"符号原样代替,保持原来的数据类型

宏__cplusplus

在生成库的工程中常常能看到如下的代码

#ifdef __cplusplus
	extern "C" {
#endif
//一些代码
#ifdef __cplusplus
	}
#endif

__cplusplus宏其实是一个整型值,可以用该宏检验当前编译器是C++编译器还是C编译器。C++编译器会对变量名、函数名等符号重整,而extern "C"对这种重整的抑制。这样有利于项目的移植

宏#和##

#是转字符串
##是链接
示例:

#define ADD(x, y) x##y
#define TRAN(x) #x

int main(int argc, char *argv[]){

    std::cout << "start" << std::endl;

    std::cout << ADD(12, 12) << std::endl;
	int a = 12;
    std::cout << TRAN(a) << std::endl;

    return 0;
}

//输出:
> start
> 1212
> a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值