【发布时间】:2021-09-24 21:37:23
【问题描述】:
我正在查看静态函数,我知道它们的范围仅限于声明它们的文件。为了澄清,我使用带有 GCC 的代码块。如果我在 ..c 文件中声明该函数并将其包含在我的 main.c 文件中,则可以访问该函数(但如果定义了非静态函数,编译器会抱怨,就像我有多个定义)。但是,如果我有一个带有一些静态函数和另一个非静态函数的 c 文件,那么静态函数是不可访问的,而非静态函数是可访问的。这对我来说是一个相当奇怪的。我知道#include 指令将要包含的文件的内容复制到声明包含指令的文件中。但是,为什么我可以访问非静态函数而不在 main.c 文件中包含 .c 文件? 关于我可以在哪里阅读该主题的任何建议?我认为它与链接有关,但我可能错了。
【问题讨论】:
-
发布演示问题的代码将使问题和潜在答案更加清晰。
-
你不应该
#include一个 .c 文件,所以这没有实际意义 -
代码值一千字。
-
我猜问题会变成“为什么我可以在另一个单元中调用未声明的函数”