#define AFX_EXT_API是什么意思?
为什么不是#define 标识符 字符串 的形式?
在C语言的预处理中,可以允许只有标识符而没有字符串的形式。
AFX_EXT_API只是一个标识符,可以不定义值。这个标识符可以用来控制程序的流程。如果没有定义标识符XXX,则定义标识符XXX。
条件编译允许只编译源程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销并提高了程序的效率。
使用预处理功能便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计。
下面举个例子吧:
我们在写条件编译语句时一般写成:
#ifndef _FLAG
#define _FLAG 常量
#endif
但在很多程序的源代码中,只定义了标识符而没有定义常量(value)!就像前面程序中的
#ifndef _FLAG
#define _FLAG
以上这些都是合法的。
只所以这样写是为了起标示作用,例如咱们在定义函数的时候,有的参数是入力参数,有的是出力参数,为了容易阅读,咱们可以
这样定义:
//声明IN和OUT,分别代表入力参数和出力参数
#ifndef IN
#define IN
#endif
#ifndef OUT
#define OUT
#endif
........
//定义加法函数
//wResult = wNum1 + wNum2;
//wNum1和wNum2为入力参数,通过IN标示,wResult为出力参数,通过OUT标示
BOOL Add(IN WORD wNum1, IN WORD wNum2, OUT WORD& wResult);
........