Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » register

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 < [ 2 ]
000
05.08.2003, 08:27 Uhr
daredevil
Speicherteufel


hallo leute!
könnt ihr mir sagen, was es bedeutet, wenn man vor einer Variablendeklaration das Wort register schreibt...?
--
tschüss,
DareDevil
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.08.2003, 08:30 Uhr
Tommix



Hallo,
damit wird der Comiler angewiesen, diese Variable nach Möglichkeit in einem Prozessorregister (und nicht im Speicher) zu halten. Der Zugriff ist dann schneller. Moderne Compiler kümmern sich um so etwas selbst und ignorieren "register" bisweilen sogar ganz.

Gruss, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
05.08.2003, 08:37 Uhr
daredevil
Speicherteufel


Aha, wenn sies ignorieren, kann man es auch weglassen, oder?
--
tschüss,
DareDevil
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
05.08.2003, 08:58 Uhr
~wissender
Gast


richtig, ist obsolet, genauso wie auto (ja richtig, ist auch ein Schlüsselwort)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.08.2003, 11:42 Uhr
virtual
Sexiest Bit alive
(Operator)


Naja, so ganz obsolet ist es dann ja wieder nicht:

C++:
int main()
{
    int i;
    printf("%p\n", &i);
}


sollte ohne warnung durch den Compiler gehen,

C++:
int main()
{
    register int i;
    printf("%p\n", &i);
}


hingegen nicht.
Man kann register auch dazu verwenden, die Auswahl des Compilers, welche Variablen in register wandern, zu überschreiben. Bei guter Kenntnis, wie der Code umgesetzt wird, kann das einen Unterschied machen. Allerdings, und da gebe ich meinen Vorrednern recht - macht der Compiler in der Regel einen guten Job und man braucht nichts nach zu schrauben.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
05.08.2003, 14:07 Uhr
ao

(Operator)



Zitat:
virtual postete

C++:
int main()
{
    register int i;
    printf("%p\n", &i);
}




Interessanterweise ist dies (laut Microsoft-Doku, ne andere hab ich grad nicht da) in C sogar ein Fehler, in C++ allerdings nicht.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.08.2003, 14:34 Uhr
0xdeadbeef
Gott
(Operator)


Wo nimmt den C++ dann die Speicheradresse eines Registers her? Junge, junge, vielleicht ist Stroustrup wirklich allmächtig...
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
05.08.2003, 14:57 Uhr
virtual
Sexiest Bit alive
(Operator)


Meines Wissens ist es auch in C kein Fehler. Es ist und bleibt eine Empfehlung. Wenn der Compiler sie nicht berücksichtigen kann, dann ists überflüssig, wenn doch, dann kann sie ausgewertet werden.

Bei inline in C++ gibt es ja ähnliche Situationen:

C++:
struct K
{
[b]virtual inline[/b] method();
}


Eine Virtuelle methode, die inline ist, kann es eigenlich nicht geben, weil die Methode ja nicht direkt, sondern über die VMT abgesprungen wird, also eine Address haben muß. Und trotzdem sollte der Code compilierbar sein.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.08.2003, 15:01 Uhr
~bussibär
Gast


aber nach der structur kommt n semikolon...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.08.2003, 15:30 Uhr
virtual
Sexiest Bit alive
(Operator)


@bussi
Test bestanden
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: