阅读269 返回首页    go 阿里云 go 技术社区[云栖]


预处理指令

预处理指令


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

  上一篇:go c++学习笔记之成员模板
  下一篇:go 线程同步之 CRITICAL_SECTION