When to use static keyword before global variables?

Can someone explain when you're supposed to use the static keyword before global variables or constants defined in header files?

For example, lets say I have a header file with the line:

const float kGameSpriteWidth = 12.0f;

Should this have static in front of const or not? What are some best practices for using static ?


static呈现文件的局部变量,这通常是一件好事,例如参见这个维基百科条目。


You should not define global variables in header files. You should define them in .c source file.

  • If global variable is to be visible within only one .c file, you should declare it static.

  • If global variable is to be used across multiple .c files, you should not declare it static. Instead you should declare it extern in header file included by all .c files that need it.

  • Example:

  • example.h

    extern int global_foo;
    
  • foo.c

    #include "example.h"
    
    int global_foo = 0;
    static int local_foo = 0;
    
    int foo_function()
    {
       /* sees: global_foo and local_foo
          cannot see: local_bar  */
       return 0;
    }
    
  • bar.c

    #include "example.h"
    
    static int local_bar = 0;
    static int local_foo = 0;
    
    int bar_function()
    {
        /* sees: global_foo, local_bar */
        /* sees also local_foo, but it's not the same local_foo as in foo.c
           it's another variable which happen to have the same name.
           this function cannot access local_foo defined in foo.c
        */
        return 0;
    }
    

  • Yes, use static

    Always use static in .c files unless you need to reference the object from a different .c module.

    Never use static in .h files, because you will create a different object every time it is included.

    链接地址: http://www.djcxy.com/p/82486.html

    上一篇: 常量局部变量数组在内存中用于'C'程序

    下一篇: 什么时候在全局变量之前使用static关键字?