@chawuciren
2018-11-29T15:48:44.000000Z
字数 699
阅读 777
C++
#define M 10
const int M=0//这个是定义一个常量,效果和上面那句一样的,但是尽量少用上面那一句
特别考虑什么时候编译,将‘M’变成10.
有参宏
#define M(a,b) a+b
int 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];