c/c++:#define、#ifdef以及#if defined

  • Post author:
  • Post category:其他




1.#define

#define的作用是定义宏。在编译过程中所有出现宏名处都用宏定义替代。



1.1 无参数宏



1.1.1 格式

#define 宏名 表达式

宏名一般采用大写字母。表达式可以是数字、字符、字符串、计算式。



1.1.2 举例


#define MAX_SIZE 100



#define NUMBER 3+4



1.2 有参数宏



1.2.1 格式

#define 宏名(形参表) 表达式



1.2.2 举例


#define MAX(a,b) (a>b)?a:b


在后续的程序中,可以使用直接函数MAX(a,b)



1.3 注意事项

a. 必须写在函数体外

b. 不需要加分号

c. 可用#undef 结束其作用域



2.#ifdef 与 #if defined

由于c或c++中头文件可以互相包含,为避免重复定义,使用#ifdef(#ifndef)来规避。

#ifndef XXX
#define XXX
...
程序体
...
#endif

有时候需要使用#ifdef进行分支控制

#ifdef A
	do job1...
#else
	#ifdef B
		do job1...
	#else
		do job2...
	#endif
#endif

上述分支控制较为繁琐,可以使用#if defined(#if !defined)简化

#if defined A || defined B
	do job1...
#else
	do job2...
#endif



版权声明:本文为Jet__P原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。