[so] Extensii gcc sau standard C?

Vlad Dogaru ddvlad at rosedu.org
Sat May 1 12:01:19 EEST 2010


Mihai Maruseac wrote:
> Am văzut azi într-un code snippet o declarație de forma
>
> int a[size1 + size2]
>
> unde size1 și size2 erau două variabile, neconstante, nu #define-uri, nu
> nimic.
>
> Este vorba de o extensie a gcc sau este ceva din standardul C ce eu
> n-am găsit la o citire pe diagonală?

Variable Length Arrays[1] au fost adaugate in C99.

[1] http://en.wikipedia.org/wiki/Variable-length_array

>
> Dacă tot suntem aici, inițializarea structurilor cu
>
> 	struct flock fl = {
> 		.l_type	= F_WRLCK,
> 		.l_start = 0,
> 		.l_whence = SEEK_SET,
> 		.l_len = 0,
> 		.l_pid = getpid()
> 	};
>
> (© Andrei Faur tema 0) este extensie gcc sau în standard/extensie C?

Sintaxa de initializare a structurilor este extensie GCC[2].

[2] http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_4.html#SEC81

> PS: Pentru prima problemă am vrut să văd dacă mi se generează cod
> identic cu calloc și am comparat codul în limbaj de asamblare.
> Diferențele erau prea mari [0]:P

[1] zice ca GCC aloca VLA-uri pe stiva, dar nu am verificat.

Hope this helps,
Vlad



More information about the so mailing list