首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么定义"extern_“而不是使用"extern"?

为什么定义"extern_“而不是使用"extern"?
EN

Stack Overflow用户
提问于 2020-09-03 16:11:51
回答 1查看 128关注 0票数 2

我试着制作一个简单的lexer,我找到了这个github页面:https://github.com/DoctorWkt/acwj/tree/master/01_Scanner,在他的源代码中我看到了:

数据.h:

代码语言:javascript
复制
...
#ifndef extern_
 #define extern_ extern
#endif

extern_ int Line;
extern_ int Putback;
extern_ FILE *Infile;
...

C.主要:

代码语言:javascript
复制
...
#define extern_
#include "data.h"
#undef extern_
...

如果我只使用extern关键字,这个关键字不起作用,但它适用于extern_,那么有什么区别呢?

EN

回答 1

Stack Overflow用户

发布于 2020-09-03 18:40:48

#define extern_告诉预处理器,每当它看到它时,就用任何东西替换extern_

所以在这种情况下,extern_没有任何意义。

但我敢打赌,在其他文件中,他们不使用#define extern_。在这种情况下,头文件中的#define extern_ extern被激活,因为#ifndef extern_是真(extern_尚未定义)。这告诉预处理程序将extern_替换为extern。因此,在一个文件中,变量是在没有extern的情况下定义的,而在其他所有文件中,它们都有extern。(这有什么用?如果你知道extern的工作原理,你就会知道原因)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63727664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档