tausch()
-
logisch, ne? schrieb:
Wie hoch schätzt Du die Wahrscheinlichkeit ein, dass das zu Problemen führt?
Mit
gcc -Wshadow
? Null.
Sonst? EOD.
-
Ich kann's mir doch nicht verkneifen:
Shriram Krishnamurthi schrieb:
Many macro systems, such as that of C, are not hygienic. Programmers sometimes try to circumvent this by
using hideous identifier names, such as __macro_result_. This is not a solution!1. Not only is a it painful to have to program this way, small typos would greatly increase development
time, and the macro would be much harder to decipher when a programmer tries to modify or correct
it later.2. This solution is only as good as the programmer’s imagination; the problem still persists, lying in wait
for just the right (wrong!) identifier to be bound in the context of use. Indeed, while a programmer
may choose a sufficiently obscure name from the perspective of other programmers, not all source is
written by humans. A tool generating C code (such as a Scheme-to-C compiler) may happen to use
exactly this naming convention.3. This name is only obscure “upto one level”. If the macro definition is recursive, then recursive in-
stances of the macro may interfere with one another.
4. If you use this macro to debug the source that contains the macro (e.g., compiling the C compiler
using itself), then your carefully-chosen “obscure” name is now guaranteed to clash!
-
Dein Programm war ja mal totaler Unsinn. Hast du überhaupt eine Ahnung, was * und & bedeuten?
int tausch(char *a, char *b) { char *d; d=b; b=a; a=d; return 0; } int main(int argc, char *argv[]) { char * a="ABC"; char * b="DEF"; printf("1:(a|b): (%s|%s)\n",a,b); tausch(a,b); printf("2:(a|b): (%s|%s)\n",a,b); return 0; }
P.S.: Man gibt 0 zurück, falls alles in Ordnung ist.
-
earli schrieb:
Dein Programm war ja mal totaler Unsinn. Hast du überhaupt eine Ahnung, was * und & bedeuten?
int tausch(char *a, char *b) { char *d; d=b; b=a; a=d; return 0; } int main(int argc, char *argv[]) { char * a="ABC"; char * b="DEF"; printf("1:(a|b): (%s|%s)\n",a,b); tausch(a,b); printf("2:(a|b): (%s|%s)\n",a,b); return 0; }
P.S.: Man gibt 0 zurück, falls alles in Ordnung ist.
na sauber
-
das hat schon so gestimmt, nur inline und void als rückgabe wär evtl. die lösung
-
earli schrieb:
Dein Programm war ja mal totaler Unsinn. Hast du überhaupt eine Ahnung, was * und & bedeuten?
Du offensichtlich noch weniger.
earli schrieb:
Man gibt 0 zurück, falls alles in Ordnung ist.
Weil 0 für "false" steht. Mannmannmann....
-
logisch, ne? schrieb:
earli schrieb:
Dein Programm war ja mal totaler Unsinn. Hast du überhaupt eine Ahnung, was * und & bedeuten?
Du offensichtlich noch weniger.
earli schrieb:
Man gibt 0 zurück, falls alles in Ordnung ist.
Weil 0 für "false" steht. Mannmannmann....
Nö, 0 steht in der shell für true.
-
und ist das glas jetzt halb voll oder halb leer
-
volkard schrieb:
Nö, 0 steht in der shell für true.
In "der" Shell? Trotzdem kein Grund die Tauschfunktion eine 0 zurückgeben zu lassen wenn es geklappt hat.
if (!tausch(...)) /* Hat geklappt, hat nicht geklappt, hat ... ??? */ { ... }
-
eris schrieb:
Dein Programm war ja mal totaler Unsinn. Hast du überhaupt eine Ahnung, was * und & bedeuten?
Warum so unfreundlich? Finde ich seltsam, einmal abgesehen davon, dass du dich damit selbst ins lächerliche ziehst, sobald du einen Flüchtigkeitsfehler machst. Und das ist nur allzu menschlich.
-
earli schrieb:
Dein Programm war ja mal totaler Unsinn. Hast du überhaupt eine Ahnung, was * und & bedeuten?
int tausch(char *a, char *b) { char *d; d=b; b=a; a=d; return 0; }
deins ist auch nicht gerade besser. In anderen Worten: Dein Programm *ist* ja mal totaler Unsinn. Hast du überhaupt eine Ahnung, was * und & bedeuten?
logisch, ne? schrieb:
volkard schrieb:
Nö, 0 steht in der shell für true.
In "der" Shell? Trotzdem kein Grund die Tauschfunktion eine 0 zurückgeben zu lassen wenn es geklappt hat.
if (!tausch(...)) /* Hat geklappt, hat nicht geklappt, hat ... ??? */ { ... }
wieso nicht? Wenn man sich an einer Konvention hält, ist das OK. POSIX hat viele Funktionen, die im Erfolgfall 0 zurückliefern. Das Ergebnis != 0 ist somit gleich dem Fehlercode. Ich finde das ganz praktisch.
-
logisch, ne? schrieb:
volkard schrieb:
Nö, 0 steht in der shell für true.
In "der" Shell? Trotzdem kein Grund die Tauschfunktion eine 0 zurückgeben zu lassen wenn es geklappt hat.
if (!tausch(...)) /* Hat geklappt, hat nicht geklappt, hat ... ??? */ { ... }
wieso sollte die überhaupt was zurück geben? die kann doch keinen fehler machen
-
wieso nimmst du nicht wieder deinen alten noob nick. dieser ist doch kacke
:p
-
wie konntest du meine tarnung aufdecken
muß an meinem schlechten deutsch liegen :p