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

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

  • #define替换代码中任意文本
  • #include 
    #define WAIT std::cin.get();
    
    int main()
    {
    
    	//使用WAIT替换std::cin.get();这行语句,但不建议这样写,降低代码的可读性,只是举例用
    	WAIT
    }
  • #define可以传入参数
  • #include 
    #define LOG(x) std::cout << x << std::endl;
    
    int main()
    {
    	LOG("Hello World!")
    	
    	std::cin.get();
    }
  • 宏可以进行条件判断。使用宏可以很好的控制日志的打印,例如DEBUG模式下打印的日志信息需要详细一点,而RELEASE模式下则有些日志不需要打印。在Debug模式下添加预处理器_DEBUG,在release模式下添加NDEBUG
  • C++学习笔记(三十三):c++ 宏定义_第1张图片
  • C++学习笔记(三十三):c++ 宏定义_第2张图片
  • #include 
    
    //只在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 
    
    //只在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();
    }

你可能感兴趣的:(c++,学习,笔记)