Ago*_*ino 1 c global function-pointers function
我试图在 C 中有一个全局函数。可以从不同的文件调用的东西。
我知道如何通过在除一个文件之外的所有文件中声明它(使用 extern)并仅在一个文件中定义它(没有 extern)来创建一个全局变量。
我需要一个 - 可能很简单 - 可以与 C89 一起使用的解决方案(我使用的是 VS2013)。
我现在正在 C 模式下编译,但如果我稍后切换到 C++ 模式,我希望它能够工作。
谢谢。
声明,通常在.h文件中,但也可以直接复制粘贴到.c文件(用于快速和脏测试等,对于任何真实代码,您应该编写适当的.h文件)。同一编译单元中的重复项只要匹配就可以。您可以将externlike 与变量一起使用,但这不是必需的,编译器会知道这只是函数声明,因为没有函数体,{}. 此外,由于没有static关键字,编译器假定这是一个全局符号。
int my_global_function(const char *string);
Run Code Online (Sandbox Code Playgroud)
定义,在一个.c文件中(更正式的一个编译单元),所以它将在一个.o文件(或库)中,否则链接器会抱怨。:
int my_global_function(const char *string)
{
puts(string);
return 0;
}
Run Code Online (Sandbox Code Playgroud)