Linux çekirdek kaynak böyle dizi değişmezleri bir yeri vardır.açık dizinler? her satır açıkça yerine sipariş güvenmek verilen değerin dizideki indeksini gösterir İşte</p> <pre><code>enum { FOO, BAR }; static const char* const names[] = { [FOO] = "foo", /* wtf is this? */ [BAR] = "bar", }; </code></pre> <p>:
Aranacak deyimi bilmiyorum - bu ne denir? Hangi standart tanımlar? (Ya da bir GNU uzantısı mı?) Bunu C++ veya sadece düz C'de yapabilir miyim? gcc
deneme, ben
$ gcc --version
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE
Bu komutların
başarı dönmektest.c
yukarıdaki ile bulmak:
$ gcc -Wall -c test.c
$ gcc -Wall -c --std=c90 test.c
$ gcc -Wall -c --std=gnu90 test.c
$ gcc -Wall -c --std=iso9899:1990 test.c
$ gcc -Wall -c --std=c1x test.c
ve bu komutlar çeşitli lambdas ilgili şikayetler ve operator=
başarısız:
$ g++ -Wall -c test.c
$ g++ -Wall -c --std=c++98 test.c
$ g++ -Wall -c --std=gnu++98 test.c
$ g++ -Wall -c --std=c++0x test.c
$ g++ -Wall -c --std=gnu++0x test.c
Bu, bunun geçerli C olduğunu (hemen hemen her lehçede), ancak C++ olmadığını gösterir. Ama ben kuşkuluyum. Bunu, Linux çekirdeği dışında herhangi bir yerde kullandığını hatırlamıyorum. Ayrıca, örneğin, this list of constructs valid in C but not C++'da açıklandığı gibi göremiyorum.
Eğer derleyici çizgilerinize '-pedantic' eklerseniz, bunun C99'a eklendiğini göreceksiniz. – caf
Herkese teşekkürler! –