预处理指令
预处理指令
1.#define 宏定义
普通——#define 宏名 字符串
#define MY_INT int
#define MAX 10000
带参数——#define 宏名(形参) 字符串
#define add(x,y) x+y
2.条件编译
在大规模的开发过程中,特别是跨平台和系统的软件里,条件编译很重要。
#include <iostream> using namespace std;#ifndef cc #define cc #define add(x,y) x+y #define n 3 #endif int main( ) { cout<<2*add(n,4);//输出为10,因为优先级 return 0; } #undef cc// 是在后面取消以前定义的宏定义
3.assert ()宏
assert()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。
#include <iostream> using namespace std; int main(int argc, char *argv[]) { char* a=NULL; char *b="hi"; assert(b);//括号内表达式为真,什么也不做,正常通过。 assert(a); return 0; }
运行截图:
4.#pragma 预处理
pragma [p'ræɡmə] n. 编译指示.
#pragma 编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。
#pragma once
只要在头文件的最开始加入这条指令就能够保证头文件被编译一次.
#pragma comment
常用的有#pragma comment (lib,"XXX.lib") 指定包含的库文件。
#pragma pack(n)
结构体字节对齐。
最后更新:2017-04-03 12:56:23