C 全局函数(非 C++)

C global function (not C++)

我正在尝试在 C 中拥有一个全局函数。可以从不同文件调用的东西。

我知道如何通过在除一个文件之外的所有文件中声明(使用 extern)并仅在一个文件中定义它(不使用 extern)来创建全局变量。

我需要一个 - 可能很简单 - 可以与 C89 一起工作的解决方案(我使用的是 VS2013)。

我现在正在 C 模式下编译,但如果我稍后切换到 C++ 模式,我希望它能正常工作。

谢谢。

声明,通常在 .h 文件中,但也可以直接复制粘贴到 .c 文件(为了快速和肮脏的测试等,对于任何真实的代码,你应该编写一个合适的 .h 文件)。只要它们匹配,相同编译单元中的重复项就可以。您可以像使用变量一样使用 extern,但这不是必需的,编译器会知道这只是函数声明,因为没有函数体 {}。此外,由于没有 static 关键字,编译器假定这是一个全局符号。

int my_global_function(const char *string);

定义,恰好在一个 .c 文件中(更正式地说是一个编译单元),因此它将恰好在一个 .o 中文件(或库),否则链接器会报错。:

int my_global_function(const char *string)
{
    puts(string);
    return 0;
}