Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

11

14.12.2011, 18:29

Ja, ob er inlined oder nicht, entscheidet letztenendes der Compiler. Moderne Compiler mit Link-Time Code Generation ignorieren inline diesbezüglich praktisch völlig und können auch Funktionen die nicht als inline definiert sind inlinen.
inline ist trotzdem nicht sinnlos. Erstens sind bei weitem nicht alle Compiler so intelligent (auch wenn alle für den PC relevanten Compiler es wohl sind) und zweitens erlaubt inline eben die Mehrfachdefinition der Funktion. Das geht auf keine andere Art und Weise ;)

12

15.12.2011, 12:46

Vielen Dank für die zahlreichen Antworten, aber ein paar Fragen habe ich noch.

1) Mit using namespace ABC funktioniert der Aufruf auch mit define-Makros, nur ohne using-Direktive kann ich nicht mehr darauf zugreifen
2) Ich benutze i.d.R. auch immer Konstanten, hab das aber in Fremdcode gesehen und rein interessehalber gefragt.
3) Warum ist das static unnötig?

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

13

15.12.2011, 13:24

1) Mit using namespace ABC funktioniert der Aufruf auch mit define-Makros, nur ohne using-Direktive kann ich nicht mehr darauf zugreifen

Nichtmehr zugreifen auf was?

3) Warum ist das static unnötig?

Weil const auf einer globalen Variablen das was das static in dem Fall tut (internal linkage) bereits impliziert ;)

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »dot« (15.12.2011, 13:31)


14

15.12.2011, 16:06

Auf das define. Zugreifen ist vielleicht das falsche Wort, nutzen dann wohl eher ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

15

15.12.2011, 18:09

Das glaub ich dir nicht ;)
Ein namespace hat keinerlei Einfluss auf ein #define

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

16

15.12.2011, 21:28

Ja es kann vlt sein, dass du darauf zugreifen kannst, dass hat aber nichts mit dem namespace zu tun, deshalb geht es ja auch nicht mehr, wenn du das using weg nimmst. das using namespace hat dabei keinen effekt auch wenn es so scheint. Wenn du du das mit direktem zugriff machst, passiert das:

C-/C++-Quelltext

1
2
3
4
namespace ABC
{
#define GAME_CAPTION "Superawesome Killer Game"
}


Dann gilt:

C-/C++-Quelltext

1
2
using namespace ABC;
std::cout << GAME_CAPTION;


Wird zu:

C-/C++-Quelltext

1
2
using namespace ABC;
std::cout << "Superawesome Killer Game";


Aber mit direktem zugriff:

C-/C++-Quelltext

1
std::cout << ABC::GAME_CAPTION;


Wird zu:

C-/C++-Quelltext

1
std::cout << ABC::"Superawesome Killer Game"; 


Das gibt natülich einen Fehler. Das makro GAME_CAPTION wird direkt im textfile ersetzt, du könntest allso genau so gut durchgehen mit "suchen und ersetzten" alle "GAME_CAPTION" mit "Superawesome Killer Game" ! Deshalb sollst du es ja auch nicht benutzen :)

17

16.12.2011, 15:24

Nur so ein Tipp am Rande: using ist nicht sehr elegant. ;)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

18

16.12.2011, 15:34

Nur so ein Tipp am Rande: using ist nicht sehr elegant. ;)

Das würd ich ganz so nicht stehen lassen, hängt ganz davon ab wie man es verwendet ;)

19

16.12.2011, 23:13

Das häufig verwendete using namespace std; am Programmanfang ist nicht gut für Anfänger zum Beispiel. :)

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

20

16.12.2011, 23:16

Wieso?

Werbeanzeige