002
23.03.2010, 23:36 Uhr
0xdeadbeef
Gott (Operator)
|
Man kann problemlos Arrays unspezifizierter Länge in der Parameterliste mitgeben, allerdings liefert der sizeof-Operator dann natürlich nicht die Größe des eigentlichen Arrays.
Was den Compilerfehler hier auslöst, ist der Aufruf
C++: |
support(A,v,{ i-1,i,i+1,i-1+n,i+n },i);
|
weil sich Arrays nicht so als Literal angeben lassen. Es ist in C99 möglich,
C++: |
support(A, v, (int[]){i - 1, i, i + 1, i - 1 + n, i + n }, i);
|
zu schreiben - die Fehlermeldung sieht mir nach gcc aus; der beherrscht C99, wenn du ihm die Compileroption -std=c99 mitgibst. Allerdings wird der sizeof-Operator in der Funktion immer noch nicht das machen, was du willst (gib einen size_t mit, der die Länge des Arrays beinhaltet).
Nachtrag: Ich sehe gerade, dass es sich um eine C++-Datei handelt. In dem Fall wirst du das Array nicht in der Form inline angeben können. Ich würde mir auch überlegen, std::vector dafür zu benutzen. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 24.03.2010 um 00:03 Uhr von 0xdeadbeef editiert. |