2013-02-18 11 views
7

Ich bin kürzlich auf eine neue Verwendung von static Stichwort gekommen. Was bedeutet static hier?static keyword in array [] Klammern

void fun(int some_array[static 7]); 

EDIT: kann jemand ein Beispiel geben, wo dies nützlich sein kann?

+0

entnommen von http://hamberg.no/erlend/posts/2013-02-18-static-array-indices.html? –

Antwort

12

Der Standard sagt in 6.7.6.3:

Eine Erklärung eines Parameters als ‚‘ Array vom Typ ‚‘ ist auf ‚‘ qualifizierte Zeiger auf Typ ‚eingestellt werden‘, wobei der Typ-Qualifikation (falls vorhanden) sind diejenigen, die innerhalb der [und] der Array-Typ-Ableitung angegeben sind. Wenn das Schlüsselwort statisch erscheint auch in der [und] des Array-Typ Ableitung, dann für jeden Aufruf der Funktion, der Wert der tatsächliches Argument entspricht, wird der Zugang zu dem ersten Elemente eines Arrays bereitzustellen mit zuzumin mindestens so viele Elemente wie durch den Größenausdruck angegeben.

Dies ist eine Funktion, die in C99 eingeführt wurde. Also da hast du es: some_array muss mindestens 7 Elemente lang sein.


Wie sie sagen, kann es keine neuen Standard ohne eine neue Nutzung für das static Schlüsselwort sein.

+2

"Wie sie sagen, kann es keinen neuen Standard geben ohne eine neue Verwendung für das Schlüsselwort' static' ", ich weiß das Gefühl, Bruder. – paulotorrens