PUBLIC void main

这是来自 Minix 源代码的 kernel.c。在这种情况下,PUBLIC 的含义是什么?

有帮助吗?

解决方案

大概是这样定义的:

#define PUBLIC extern
#define PRIVATE static

哎呀,刚刚看了我的《塔南鲍姆》。它定义为:

#define PUBLIC

IE。当什么也没有。这只是一点“自我记录”。PRIVATE 的定义如我最初所说。您可以在 Minix 源文件中找到这些 const.h.

其他提示

引自 Tanenbaum The Minix Book Operating Systems Design and Implement 第三版 第 140 页第 3 段

PRIVATE 被定义为静态的同义词。未在声明它们的文件外部引用的过程和数据始终声明为 PRIVATE,以防止它们的名称在声明它们的文件外部可见。作为一般规则,如果可能的话,所有变量和过程都应在局部范围内声明。PUBLIC 被定义为空字符串。kernel/proc.c 中的一个示例可能有助于阐明这一点。宣言

PUBLIC void lock_dequeue(rp)

来自 C 预处理器的结果为

无效lock_dequeue(rp)

static 全局变量具有文件范围。因此,如果您定义全局变量或将函数设置为静态,那么它们仅在该文件中可见。也就是说,您只能在多文件环境中访问该文件内的代码中的内容。

extern 全局变量可以从文件外部可见/访问。对于函数定义 extern 是可选的,因为默认情况下它们在文件范围之外可见。

哈希定义这些东西 PRIVATEPUBLIC 无非是添加一个抽象层,以便更好地解释和理解实际意图。正如在 OOP 设计中一样,私有和公共有不同的解释,添加相同的名称表明它们具有什么属性。

我猜想它将被预处理器替换为更多的 C 语言(或空字符串)。

尝试并搜索后 #definePUBLIC

Word public表示它将方法标记为编译单元的“公共接口”的一部分,即它是一种可以从当前源文件外部调用的方法。(这只是一个受过教育的猜测)。正如其他人所指出的那样,公众几乎肯定是一个预处理器宏,它扩展到某些适当的关键字/属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top