Arrayübergabe in C
-
http://c-faq.com/aryptr/aryparmsize.html
Arrays, die man an Funktionen übergibt, kommen dort nur als Pointer an.
-
Maex2808 schrieb:
Okay, wäre eine Lösung.
Das ist nicht nur eine Lösung, sondern der übliche Weg. Gewöhn dich besser daran.
Übrigens würde ich dir davon abraten, "new" als Variablennamen zu verwenden. In C geht das zwar in Ordnung, in C++ ist das aber ein Schlüsselwort. Solltest du dein Programm mal mit einem C++-Compiler kompilieren wollen, gibt's ein Problem.
-
_matze schrieb:
Übrigens würde ich dir davon abraten, "new" als Variablennamen zu verwenden. In C geht das zwar in Ordnung, in C++ ist das aber ein Schlüsselwort.
c code durch einen c++ compiler zu scheuchen, ist doch sowieso eine schlechte idee. also kann man auch 'new', 'class', 'operator', usw. ruhigen gewissens verwenden.
-
~fricky schrieb:
_matze schrieb:
Übrigens würde ich dir davon abraten, "new" als Variablennamen zu verwenden. In C geht das zwar in Ordnung, in C++ ist das aber ein Schlüsselwort.
c code durch einen c++ compiler zu scheuchen, ist doch sowieso eine schlechte idee. also kann man auch 'new', 'class', 'operator', usw. ruhigen gewissens verwenden.
Das würde ich so nicht unterschreiben. Es ist doch denkbar, dass man mal bestehenden C-Code in ein C++-Projekt packen will oder wasauchimmer. Warum sollte man ausgerechnet die paar Schlüsselwörter verwenden, bei denen man dann im Fall der Fälle Probleme kriegt?
-
_matze schrieb:
Das würde ich so nicht unterschreiben. Es ist doch denkbar, dass man mal bestehenden C-Code in ein C++-Projekt packen will oder wasauchimmer.
dann kannstes ja trotzdem mit 'nem C-compiler compilieren. der linker klebt dann alles zusammen, was in verschiedenen sprachen entwickelt wurde.
-
~fricky schrieb:
_matze schrieb:
Das würde ich so nicht unterschreiben. Es ist doch denkbar, dass man mal bestehenden C-Code in ein C++-Projekt packen will oder wasauchimmer.
dann kannstes ja trotzdem mit 'nem C-compiler compilieren. der linker klebt dann alles zusammen, was in verschiedenen sprachen entwickelt wurde.
Klar, solange du nicht gewisse Code-Stückchen per C&P einfach mal schnell in ein anderes (C++-)Projekt übernehmen willst. Ob das immer eine sinnvolle, wohl überlegte Vorgehensweise ist, sei mal dahingestellt. Ich bleibe dabei: man muss ja nicht ausgerechnet die paar Schlüsselwörter als Bezeichner verwenden, die in C++ reserviert sind. Die beiden Sprachen verbindet schließlich eine gewisse Verwandtschaft. :p
-
_matze schrieb:
Ich bleibe dabei: man muss ja nicht ausgerechnet die paar Schlüsselwörter als Bezeichner verwenden, die in C++ reserviert sind.
naja, das wäre auch 'ne schöne begründung für die malloc-caster, die hier von zeit zu zeit aufkreuzen: 'ich caste malloc, meide bestimmte bezeichner, verwende keine VLA's, etc, weil ich eigentlich in c++ programmieren will, aber nicht mit klassen umgehen kann'.
-
~fricky schrieb:
_matze schrieb:
Ich bleibe dabei: man muss ja nicht ausgerechnet die paar Schlüsselwörter als Bezeichner verwenden, die in C++ reserviert sind.
naja, das wäre auch 'ne schöne begründung für die malloc-caster, die hier von zeit zu zeit aufkreuzen: 'ich caste malloc, meide bestimmte bezeichner, verwende keine VLA's, etc, weil ich eigentlich in c++ programmieren will, aber nicht mit klassen umgehen kann'.
dies ist ein äußerst valider standpunkt
-
_matze schrieb:
Ich bleibe dabei: man muss ja nicht ausgerechnet die paar Schlüsselwörter als Bezeichner verwenden, die in C++ reserviert sind. Die beiden Sprachen verbindet schließlich eine gewisse Verwandtschaft. :p
C != C++ und C++ != C. Wenn du C und C++ *nicht* mischt (was man *nicht* tun sollte), dann gibt es keinen Grund, warum ich keine C++ Bezeichner in C verwenden darf. Ich finde es manchmal toll, dass ich Variablen 'new' / 'delete' benennen kann.
-
aber wer fragt, wo der fehler im code ist, und new als eigenen bezeichner benutzt, und dessen code ich mal schnell im c++-compiler checken könnte, kriegt evtl nur deswegen keine antwort, weil ich beim ersten new-fehler sofort die lust verliere.
-
supertux schrieb:
C != C++ und C++ != C.
Ist mir bewusst. Habe ich was anderes gesagt?
supertux schrieb:
Wenn du C und C++ *nicht* mischt (was man *nicht* tun sollte)
Was meinst du denn mit mischen? Wenn du damit meinst, dass ich aus einem C-Projekt eine Funktion nehmen und sie in ein C++-Projekt packen will (eventuell auch mit Anpassungen), dann ist das doch durchaus vorstellbar. Warum sich in einem solchen Fall (egal, wie selten er vielleicht vorkommt) das Leben schwer machen? Ich habe letztens noch einen ähnlichen Fall gehabt. Ich habe aus einem C-Projekt das Grundgerüst für eine Bilderfassung genommen (erzeugen von Bilderfassungs- und Process-Threads, Events usw.), in ein C++-Projekt kopiert und an die neue Bilderfassungseinheit angepasst. Hätte ich da überall C++-Schlüsselwörter anzupassen, wären das halt ein paar Minuten mehr Arbeit gewesen. Keine große Sache, zugegeben. Aber trotzdem, warum sollte man das tun?
-
~fricky schrieb:
_matze schrieb:
Das würde ich so nicht unterschreiben. Es ist doch denkbar, dass man mal bestehenden C-Code in ein C++-Projekt packen will oder wasauchimmer.
dann kannstes ja trotzdem mit 'nem C-compiler compilieren. der linker klebt dann alles zusammen, was in verschiedenen sprachen entwickelt wurde.
Klar, und die Funktionsdeklarationen braucht C++ plötzlich auch nicht mehr, wenn man es den Linker machen lässt...
-
volkard schrieb:
aber wer fragt, wo der fehler im code ist, und new als eigenen bezeichner benutzt, und dessen code ich mal schnell im c++-compiler checken könnte, kriegt evtl nur deswegen keine antwort, weil ich beim ersten new-fehler sofort die lust verliere.
und wer 'vergessen hat', den rückgabewert von malloc zu casten, kriegt von dir auch keine antwort, ne?
Tachyon schrieb:
Klar, und die Funktionsdeklarationen braucht C++ plötzlich auch nicht mehr, wenn man es den Linker machen lässt...
das ist doch harmlos. man muss nur mit extern "C", #ifdef __cplusplus, usw. umgehen können.