C++预处理宏

条件指令

#if,#else,#elif,#ifndef,#ifdef,#endif

#if COND

如果COND为真,则编译到下一个条件指令的语句

否则,直接跳到下一个条件指令的语句

#elif COND

如果前面#if的条件是假,且COND为真,则编译到下一个条件指令的语句

否则,直接跳到下一个条件指令的语句

#else

如果前面#if的条件是假,则编译到下一个条件指令的语句

否则直接跳过

#ifndef SOMETHING

如果未定义SOMETHING,则编译到下一个条件指令的语句

否则,直接跳到下一个条件指令的语句

#ifdef SOMETHING

如果定义了SOMETHING,则编译到下一个条件指令的语句

否则,直接跳到下一个条件指令的语句

#endif 

结束最近的条件语句

定义指令

#define

语法一
#define A B

把下文中的A全部替换成B

语法二

#define A\

B\

C\

D

把下文中的A全部替换成

B

C

D

语法三

#define FUNC(EXPR1,EXPR2)  EXPR1 operator EXPR2

定义函数

每一个变量尽量打括号

如调用上述函数

假设 operator 是 *

FUNC(1+2,1+2)实际调用 1+2*1+2==5

可是我们想要的是(1+2)*(1+2)==9

所以正确的是

#define FUNC(EXPR1,EXPR2) ((EXPR1)operator(EXPR2))

包含指令

#include<FILE>

#include"FILE"

两个指令不同在于

#include<FILE>包含系统FILE,如cstdio

#include“FILE”先在当前文件包含文件夹搜索FILE,之后才进入系统文件夹搜索

错误与警告指令

#error STH

#warning STH

将STH作为错误或警告内容在编译时显现。

友情链接:https://www.cnblogs.com/miyazakehime/p/9154357.html

猜你喜欢

转载自www.cnblogs.com/ColinWang-OIer/p/10490791.html