关于#define

来源:百度知道 编辑:UC知道 时间:2024/06/07 23:43:18
#define +字符串,比如:#define HAVE_BIND ,后边什么都没有了,不知道什么意思,那个高手给解释一下,
后边跟两个我知道是等价的意思,但是这个什么意思哦,谢谢

意思就是,仅仅告诉预编译器,表示存在一个宏HAVE_BIND,而这个宏并没有什么对应的实际的语句操作。这种使用方法常常用于条件编译等。
类如 #define N 5这样的宏定义,预编译器处理源代码时,会将源代码中的N替换成5,而对于#define HAVE_BIND这样的宏定义,如果预编译器在源代码中遇到了HAVE_BIND宏,则用空白替换它,否则,预编译器就仅仅告诉自己,有个宏叫做HAVE_BIND,在遇到类似#if define HAVE_BIND之类的预编译指令时这个HAVE_BIND才会用上。

为什么define后面可以只有一个名字,这个语句的意思就是,将XXXX替换为空(从文本上忽略).比如
#define HAVE_BIND
意思就是说,在本文件中,凡HAVE_BIND 文本串,在编译时都被替换成空白,被忽略,或者说删除.然而,这不影响它作为#ifdef判断的有效性,HAVE_BIND 仍然是一个被define过的东西.就这个意思,应该理解了吧.