tra*_*end 2 c global-variables static-libraries
目前我有我的上面定义的子程序和全局变量main().我正在尝试用C创建一个库.我可以在头文件中声明全局变量吗?
我可以在头文件中声明全局变量吗?
是的,您可以在头文件中声明全局变量.但是,这些必须是声明,而不是全局变量的定义.
换句话说,标题应该说
// This goes into the header
extern int my_global_int;
和C文件应该说
int my_global_int;
注意:您可以这样做并不意味着您应该这样做.从库中公开"原始"全局变量是一种不好的做法,因为库的用户可以对他们做出意想不到的事情.
一种更好的方法是通过制作它们来隐藏你的全局变量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;
    }
}