Cherno C++系列笔记18——P55~P56 宏定义、

文章目录

  • 1.P55 宏定义
  • 2.P56

1.P55 宏定义

参考:视频 笔记

  1. 宏定义用于函数

注意宏定义的语句最后不要加;,而应该在调用的语句后面加;,因为这样更加符合语法规则(在调用的地方加;

#include

#define LOG(x) std::cout << x << std::endl

int main()
{
	LOG("Hello");
	std::cin.get();
}
  1. 宏定义用于控制日志输出

下面的代码就是判断是否定义了PR_DEBUG这个宏,如果定义了就定义有效的LOG(x)宏,否则就定义LOG(x)宏为空。

#define PR_DEBUG

#if PR_DEBUG
#define LOG(x) std::cout << x << std::endl
#else
#define LOG(x) //替换成空
#endif

对于这个空的宏定义,最后调用的时候相当于下面这样,也就是空语句。所以这就解决了Debug和Release模式下日志输出的问题。

 LOG(x);   // 调用
 ;  // 实际,只有一个;就是一个空语句
  1. \定义多行宏
    可以使用反斜杠来写多行的宏,因为宏必须在同一行。
#include

#define MAIN int main() \
{\
   std::cin.get();\
}

MAIN
  1. 宏定义最好加上()限制,防止出错
    这个视频中没讲,是在实际开发中遇到的。比如下面语句
// 不好的定义
#define ADD(a, b)    a + b
// 规范的定义
#define ADD(a, b)    (a + b)

int main()
{
	// 本意计算(a+b) * 3
	int result = ADD(a, b) * 3;
	// 由于宏定义就是完全替换,实际上是a + b * 3
	int result = a + b * 3;
}

2.P56

你可能感兴趣的:(c++)