Difference b/w global and static global variable

rsodimbakam's Avatar, Join Date: Sep 2008
Newbie Member
Is there any difference b/w global variable and static global variable ? and when each one is used in real time environement ?

pradeep's Avatar, Join Date: Apr 2005
Team Leader
Global variable defined with static keyword has a scope limited to translation unit it is defined in. This variable is not "totally" global (possible to use in other source files), it is visible and usable only in this source file (translation unit, to be exact).
internet_bug's Avatar, Join Date: Sep 2008
Go4Expert Member
Static variables are those which are initilaized and defined inside the main() body. These variables can be re-initialied as per requirement and their value changes. On the other hand Global variables are initilaized and defined before the main() body. If you initilialize and define a varibale gloabally it's value will remain constant, meaning whenever you use this variable in your main() body its value used will be the defined value before the main() body . Hope u got that
erislover's Avatar, Join Date: Aug 2008
Light Poster
Originally Posted by rsodimbakam
Is there any difference b/w global variable and static global variable?
static is a storage class specifier (static, auto, register, extern). Global variables (those defined outside a function body) without an explicit storage class are always static, but global variables not specifically declared static have external linkage.

Code: c
static int i; // available anywhere in this file (translation unit)
int j; // available anywhere in this file, and in other files by those files using "extern"
extern int k; // available anywhere in this file, but actually declared in some other file;

void main(void)
{ // ...

If you have no good reason to allow external linkage, I suggest you explicitly declare global variables to be static. Furthermore, I suggest avoiding global variables unless you have no good alternative. (You may not have a good alternative, especially in embedded systems, given your mention of RTS).