Re: PCI Express support for 2.4 kernel

From: Vladimir Kondratiev
Date: Mon Dec 15 2003 - 10:53:48 EST


OK, I almost convinced it may be removed.
My point is, this initialization with 0 cost nothing. Readability and clearness of code do matter, on my opinion. I think when one states explicitly he expect variable to have 0 value, it is better then use implicit rules.

To illustrate zero cost, I did the following test:
[tmp]$ cat t.c; gcc -S t.c; cat t.s
static int a1=0;
static int a2;
/* EOF */

.file "t.c"
.local a1
.comm a1,4,4
.local a2
.comm a2,4,4
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.3.1 20030811 (Red Hat Linux 3.3.1-1)"

As you can see, assembly code is identical, compiler did this trivial optimization for me.

Vladimir.

Mark Hahn wrote:

+static void* rrbar_virt=NULL;


Do not bother initializing static variables to zero. This just wastes bss space, since these variables are automatically zeroed for you, anyway.


I did not found this feature in standard. More, future versions of gcc will give at least warning, if not error, like "use of uninitialized variable". Many good sources also say it is good practice to initialize all variables. I rely on its value later. I' ll keep it as is unless really strong arguments provided.



it'll get your code rejected. static variables are always, everywhere,
initialized to zero (OK, probably not embedded environments). this is a code standard, not a matter of taste.




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/