[关闭]
@chawuciren 2018-11-29T15:48:44.000000Z 字数 699 阅读 699

关于C++的头文件/预处理语句

C++


宏定义语句

  1. #define M 10
  2. const int M=0//这个是定义一个常量,效果和上面那句一样的,但是尽量少用上面那一句

特别考虑什么时候编译,将‘M’变成10.
有参宏

  1. #define M(a,b) a+b
  2. int x=M(3,4)*M(5,6);
  3. int x=3+4*5+6;

什么是条件编译
形式1

  1. #indef 常量表达式(如果为真就把这一段贴到程序里去)
  2. 程序段
  3. #endif

形式2

  1. #indef 常量表达式
  2. 程序段1//为真把这一段贴进去
  3. #else
  4. 程序段2
  5. #endif

形式3

  1. #ifndef 常量表达式//为假执行第一段
  2. ......后面都一样的啦

具体用法

  1. #ifndef
  2. 某一段没有编译过
  3. int main(){
  4. #indef LETTER
  5. ...
  6. #else
  7. ...
  8. #endif
  9. }

可用于系统移植


11.29

举个栗子

  1. #ifdef WINDOW
  2. #define MYTYPE long
  3. #else
  4. #define MYTYPE byte-8
  5. #endif
  6. //假如在window系统,加上这一句
  7. #define WINDOW(甚至不用写1,只要有这句就是存在了)
  8. //unix系统不要这句就行
  9. 然后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];

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注