@chawuciren
        
        2018-11-29T15:48:44.000000Z
        字数 699
        阅读 864
    C++
#define M 10const int M=0//这个是定义一个常量,效果和上面那句一样的,但是尽量少用上面那一句
特别考虑什么时候编译,将‘M’变成10. 
有参宏
#define M(a,b) a+bint x=M(3,4)*M(5,6);int x=3+4*5+6;
什么是条件编译 
形式1
#indef 常量表达式(如果为真就把这一段贴到程序里去)程序段#endif
形式2
#indef 常量表达式程序段1//为真把这一段贴进去#else程序段2#endif
形式3
#ifndef 常量表达式//为假执行第一段......后面都一样的啦
具体用法
#ifndef某一段没有编译过int main(){#indef LETTER...#else...#endif}
可用于系统移植
11.29
#ifdef WINDOW#define MYTYPE long#else#define MYTYPE byte-8#endif//假如在window系统,加上这一句#define WINDOW(甚至不用写1,只要有这句就是存在了)//unix系统不要这句就行然后main里面的MYTYPE x就可以被换掉
我们有以下文件 
f.cpp f1.cpp f2.cpp f3.cpp f4.h 
在每一个cpp文件里都有#include 
如果在f4.h中 
#ifndef _book_h_ 
#define _book_h_ 
  void fun(){
} 
 #endif 
 这样就只有一个副本 
 编译f、f1、f2等的时候,碰到头文件,打开f4一看,哦,存在了,关门走人 
 都用了f里的副本
用于数组 
 const int NUM=10; 
 int a[NUM];
