underline ?!?!?
-
mal ne dumme frage:
wozu diente nochmal dieses schicke (doppelte) underline vor manchen bezeichnern (hatte das irgendwas mit dem praeprozessor oder compiler zu tun) !?!?!?
gruss.
-
doppelte Unterstriche sind für den Compiler reserviert, also ist es wahrscheinlich irgend was, was der Compiler dir zur Verfügung stellt (Standard Erweiterungen oder so) oder einfach ein Programmierer, der den Standard nicht kennt.
-
...verstehe.
leider gabs beim googlen auch nicht mehr infos (ich hab naemlich nen code vorliegen der sowas beinhaltet ist nicht von mir, und es kratzt mich nicht zu wissen was zu ein benutzen von 2 underlines vor nem bezeichner bewirkt).
also wer ne idee hat, her damit
gruss
-
Zum Beispiel Assembler Code einfügen. So:
__asm
{}
Meinst du sowas? Das ist aber nicht ANSI C und Compilerabhängig, ob dies erlaubt ist!
-
ja sowas in der art ...
ich finds schon noch raus .. hab die vermutung das solche sachen in verbindung mit compiler-direktiven auftauchen oder fuer sowas wie assembleraufrufe (siehe post von vorher) nuetzentrotzdem danke.
-
ganz einfach. Der Compiler benutzt ja Namen für seine eigenen Sachen. Da wären einmal:
- keywords (int, for, auto, ...) - logisch dass du die nicht nehmen darfst
- Standardfunktionen (strlen, printf - darfst du auch nicht)
- Standardmäßig definierte Makros (errno, getc, ERANGE)
- erlaubte Erweiterungen des Standards (strdup und andere Stringfunktionen, also alles was mit str... anfängt; andere errno-Werte: ENOMEN, ENOSYS, EAGAIN etc. alles was in das Schema passt; wcs-Sachen (wide char string), ...)
- Namen die der Compiler in Headerdateien verwendet, evtl. nicht-Standardsachen. Damit du damit keine Konflikte bekommst fangen die entweder mit _Großbuchstabe oder __ an. Daraus folgt, dass du sie nicht benutzen solltest, da du sonst Gefahl läufst, dass es irgendwann einen Compiler gibt, der denselben Namen verwendet.
- etc.
in C++ kommt noch dazu, dass Namen mit zwei inneren Unterstrichen, wie foo__bar nicht erlaubt sind, damit der Compiler das intern für Namespaces und so verwenden kann.
Ich hatte mal so einen Fall. Es war ein fertiges Programm (ich glaub Scilab), das liess sich nicht compilieren, weil die einen Bezeichner __ui verwendet hatten, der sich mit dem GCC nicht vertragen hat.
-
wozu diente nochmal dieses schicke (doppelte) underline
Nur mal so nebenbei: diese Unterstriche heißen im Englischen nicht underline sondern underscore (meine Einwurf wurde durch ein aktuelles Thema im NADRW-Forum motiviert)