Klammer und Array Problem

Skini

Erfahrenes Mitglied
Hi,
ich habe folgendes problem: ich will mit gcc einen code Compilieren,
der unter anderem diese stelle enthält:
C++:
int cout(var1, var2, array1[])

der compiler bricht immer mit der Fehlermeldung "expected ')' before '[' token" ab.
gibt es eine Möglichkeit dass zu umgehen?
greetz Skini
 
alles char.
also:
C++:
   1.
char var1, var2;
char array1[]
int cout(var1, var2, array1[])

int cout(var1, var2, array1[])
{
...
}
 
Zuletzt bearbeitet:
Moin Skini,

Du musst hier eine Größe für das Array angeben!!

Also beispielweise
Code:
char array1[10];
für 10 Elemente, oder
Code:
char *array2 = new char[10];
so es denn ein Zeiger sein soll (hierbei dann aber das anschließende "delete[ ] array2;" nicht vergessen)!

tschüss
Klaus
 
Zuletzt bearbeitet:
Die fehler Meldung Lautet ja:
expected ')' before '[' token
das hat ja nichts mit der größe zu tun, sondern damit dass die eckige klammer in der Runden ist, und dass GCC nicht in den Kram passt.
Und wenn ich
C++:
      char var1, var2;
      char array1[2000]
      int cout(var1, var2, array1[2000])
       
      int cout(var1, var2, array1[2000])
      {
      ...
      }
verwende tuut dass das überhaupt nichts bringen :P
greetz skini
 
Die fehler Meldung Lautet ja:
expected ')' before '[' token
das hat ja nichts mit der größe zu tun, sondern damit dass die eckige klammer in der Runden ist, und dass GCC nicht in den Kram passt.
Und wenn ich
C++:
      char var1, var2;
      char array1[2000]
      int cout(var1, var2, array1[2000])
Was soll denn das werden? :confused:

Vermutlich willst du dort die Funktion cout aufrufen? Ein Aufruf sieht aber ganz anders aus:
C++:
int result = cout(var1, var2, array1);

Gruß

PS: Die Funktion muß natürlich vorher deklariert worden sein.
 
Moin zusammen,

deepthroat hat völlig Recht ;)

Und selbst wenn Du dort eine eigene Funktion basteln wolltest, darfst Du dort in der Parameterliste natürlich nur die Variable "array1" und nicht "array1[irgendeine_Größe]" übergeben Die Größenangabe darf immer nur bei der Deklaration der Variable erfolgen!!

Und nur mal so als Tipp: in Deiner zweiten Zeile mit der Deklaration bitte das Semikolon am Ende nicht vergessen :suspekt:

tschüss

Klaus
 
@vfl_freak:
Das mit dem ; und der 2000 war nur ein fehler im Post :P.
@deepthroat:
Das IST die deklaration, der aufruf erfolgt wo anders.

Zur erinnerung: es geht ja darum, dass der Compiler bockt wenn ich [ und ] in der parameter liste der funktions definition verwende.
Skini
 
Hallo Skini,

also - eine Standardfunktion wie cout zu überschreiben, halte (vorsichtig ausgedrückt) für gewagt und (mit Verlaub) für keinen guten Programmierstil !!
Nenn' sie dann doch wenigstens my_cout oder so .... Wenn mal irgendein anderer an den Code muss, bekommt er doch graue Haare :-)

Und wenn es sich bei Deiner Zeile 3 wirklich um die Deklaration handelt, dann sollte sie bitte auch so aussehen:
Code:
int my_cout( char var1, char var2, char array1[2000] );
Du musst in der Parameterliste immer Datentyp eines Parameters angeben Wobei "char array1[2000]" zwar vom Compiler her geht, aber mal sicher höchst unschön ist!!
Deutlich besser, eleganter und sicherer ist ist hier sowas wie string (oder notfalls auch CString) !!

Gruß
Klaus
 
Ich musste die Funktion neu schreiben weil dass Programm teil eines eigenen OS ist :P.
also wenn ich die Dateitypen mit bei der Deklaration angebe, bekomme ich die Fehler meldung "argument 'var1' doesn't match prototype'". und das mit den Klammern in der Definition wird immer noch bemängelt :-(
Skini
 
Zurück