当前位置:千优问>常见问答>关于#define的用法问题

关于#define的用法问题

2023-01-12 11:28:39 编辑:join 浏览量:622

关于#define的用法问题

关于#define的用法问题

#ifdef OS_GLOBALS....................................1 #define OS_EXT........................................2 #else..................................................3 #define OS_EXT extern................................4 #endif.................................................5 意思就是说,如果 OS_GLOBALS被定义,则本文件中的 OS_EXT被替换为空(被忽略), 如果 OS_GLOBALS未被定义,则本文件中的OS_EXT 被替换为 extern关键字. 意义比较明确, 就是给出了本文件中哪些变量和函数,在何时需要使用 extern引用 (取决于其他文件中有无定义 OS_GLOBALS.为方便你理解, 举个例子.现在有两文件 AAA.c和 BBB.cAAA.c内容是#define OS_GLOBALSBBB.c内容是#ifdef OS_GLOBALS#define OS_EXT#else #define OS_EXT extern#endifOS_EXT void function1(void);如果AAA.c先于BBB.c编译时,OS_GLOBALS被定义,在BBB.c里,实际上是void function1(void); // 声明了自己的函数如果BBB.c先于AAA.c编译,则OS_GLOBALS被定义,在BBB.c里,实际上是extern void function1(void); // 声明了外部的一个函数.另外,你想了解的比较重要的是,为什么define后面可以只有一个名字,这个语句的意思就是,将XXXX替换为空(从文本上忽略).比如#define OS_EXT意思就是说,在本文件中,凡OS_EXT文本串,在编译时都被替换成空白,被忽略,或者说删除.然而,这不影响它作为#ifdef判断的有效性,OS_EXT仍然是一个被define过的东西.就这个意思,应该理解了吧.

标签:define,用法