//宏Macro :使用预处理器来“宏”化某些操作,实现一定的自动化,在代码中替换和查找,发生在预处理阶段,模版发生在编译过程
//预处理阶段:是一个文本编辑阶段,在这个阶段,我们可以控制哪些代码可以实际喂给编译器 (以#开头,是预处理指令符号)
//禁用自定义区域代码
//#if 0
//#endif
//在define中如果需要换行,用\ 即可表示代码中的换行,为了美观手动换行,但是代码里的换行要用转义字符\
宏的两种定义方式(xcode)
第二种: #define PR_Debug 0
#define name value
#include <string>
#include <iostream>
//宏Macro :使用预处理器来“宏”化某些操作,实现一定的自动化,在代码中替换和查找,发生在预处理阶段,模版发生在编译过程
//预处理阶段:是一个文本编辑阶段,在这个阶段,我们可以控制哪些代码可以实际喂给编译器 (以#开头,是预处理指令符号)
//用WAIT 替换 std::cin.get()
//#define WAIT std::cin.get()
//#define OPEN_CURLY {
//这段代码的意思是,PRO_Debug定义了则输出x,否则不输出
//在release模式下运行,发现没有输出,意味着release下编译时不会加载宏定义
#define PR_Debug 0//可以直接在代码中定义PRO_Debug等于0
//#if PR_Debug==1 //判断值用if ifdef仅判断是否被定义
#ifdef PRO_Debug
//在设置的build setting的Preprocess找到debug,添加想要定义的名字
#define LOG(x) std::cout<<x<<std::endl
#else
#define LOG(x)
#endif
//相对于在预处理阶段,利用宏,替换代码,eg遇到LOG,替换成std::cout<<x<<std::endl
//#define LOG(x) std::cout<<x<<std::endl
//在define中如果需要换行,用\ 即可表示代码中的换行,为了美观手动换行,但是代码里的换行要用转义字符\
//禁用自定义区域代码
//#if 0
//#endif
int main()
//OPEN_CURLY
{
LOG(5);
// std::cin.get();
// WAIT;
}