Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Stringverknüpfung

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
09.10.2007, 19:41 Uhr
banshee



hi,


C++:
puts("init: " s)


Wieso funktioniert das? Müsste es nicht puts("init: " + s) heißen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
09.10.2007, 20:46 Uhr
0xdeadbeef
Gott
(Operator)


Das funktioniert nur dann, wenn s ein Makro a la

C++:
#define s "foo"


ist, damit expandiert das zu

C++:
puts("init: " "foo");


...und das kann der Compiler locker zusammensetzen (auch in mehreren Zeilen, was übrigens der Hauptanwendungszweck dafür ist).

Mit + wird daraus ne Zeigeraddition, das landet irgendwo im Nirvana und wird dir mit aller Wahrscheinlichkeit nen Segfault erzeugen. Mit variablen Strings empfiehlt sich an der Stelle die Verwendung von printf, a la

C++:
char const *s = "foo";

printf("init: %s\n", s);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
09.10.2007, 21:45 Uhr
banshee



okay das erklärt einiges.

Das Original ist übrigens
C++:
#define initlog(s) puts("init: " s)
    initlog("sdl");
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: