C++学习笔记(三十三):c++ 宏定义

本文介绍了C++中宏定义的使用,包括文本替换功能、其对代码可读性的影响以及如何通过条件判断实现不同模式下的日志控制。特别强调了过度使用宏可能导致的代码维护问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本节对c++的宏定义进行描述。c++使用预处理器来对宏进行操作,我们可以写一些宏来替换代码中的问题,c++的宏是以#开头,预处理器会将所有的宏先进行处理,之后在通过编译器进行编译。宏简单说就是文本替换,可以替换代码中的任何东西,因此过度使用宏会降低代码的可读性。

  • #define替换代码中任意文本
  • #include <iostream>
    #define WAIT std::cin.get();
    
    int main()
    {
    
    	//使用WAIT替换std::cin.get();这行语句,但不建议这样写,降低代码的可读性,只是举例用
    	WAIT
    }
  • #define可以传入参数
  • #include <iostream>
    #define LOG(x) std::cout << x << std::endl;
    
    int main()
    {
    	LOG("Hello World!")
    	
    	std::cin.get();
    }
  • 宏可以进行条件判断。使用宏可以很好的控制日志的打印,例如DEBUG模式下打印的日志信息需要详细一点,而RELEASE模式下则有些日志不需要打印。在Debug模式下添加预处理器_DEBUG,在release模式下添加NDEBUG
  • #include <iostream>
    
    //只在DEBUG模式下打印log,release模式下不打印
    #ifdef _DEBUG
    #define LOG(x) std::cout << x << std::endl;
    #else
    #define LOG(x)
    #endif
    
    
    int main()
    {
    	LOG("Hello World!")
    	
    	std::cin.get();
    }
  • 可以给宏定义复制
  • #include <iostream>
    
    //只在DEBUG模式下打印log,release模式下不打印
    #if _DEBUG == 1
    #define LOG(x) std::cout << x << std::endl;
    #elif defined(NDEBUG)
    #define LOG(x)
    #endif
    
    
    int main()
    {
    	LOG("Hello World!")
    	
    	std::cin.get();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值