您是否在C库中定义全局变量?

tra*_*end 2 c global-variables static-libraries

目前我有我的上面定义的子程序和全局变量main().我正在尝试用C创建一个库.我可以在头文件中声明全局变量吗?

das*_*ght 9

我可以在头文件中声明全局变量吗?

是的,您可以在头文件中声明全局变量.但是,这些必须是声明,而不是全局变量的定义.

换句话说,标题应该说

// This goes into the header
extern int my_global_int;
Run Code Online (Sandbox Code Playgroud)

和C文件应该说

int my_global_int;
Run Code Online (Sandbox Code Playgroud)

注意:可以这样做并不意味着您应该这样做.从库中公开"原始"全局变量是一种不好的做法,因为库的用户可以对他们做出意想不到的事情.

一种更好的方法是通过制作它们来隐藏你的全局变量static,然后公开函数来操作它们:

// This goes into the header
int get_global();
void set_global(int n);

// This goes into the C file
static int my_former_global;

int get_global() {
    return my_former_global;
}
void set_global(int n) {
    if (<n-is-valid>) {
        my_former_global = n;
    }
}
Run Code Online (Sandbox Code Playgroud)