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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

21

06.05.2009, 18:55

Zitat von »"K-Bal"«

Zitat von »"Databyte"«

Also so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#ifndef _FILE_H
#define _FILE_H
#pragma once



...


#endif


Da ist das #pragma once jetzt zu viel, doppelt gemoppelt ;)


Nein ist es nicht. Compiler die #pragma once unterstützen können hier von den Vorzügen profitieren, ansonsten wird der Effekt über die Includeguards erzeugt.

Zitat von »"Genion"«

Allerdings ist die gesparte Zeit durch #pragma once eher marginal. (Hält sich im Bereich von max. 1 Minute, fast immer aber noch unter 30 Sekunden)


Von was für Projekten sprichst du?

22

06.05.2009, 19:45

Von Projekten um die verschiedenen Varianten zu testen und daher mehr oder weniger nur aus headern bestehen. Hier gibts auch nen Artikel der es bestätigt (wobei ichs dennoch mal selbst testen wollte). Da wird auch gesagt, dass die die externen Includeguards mal bei Star Wars Galaxies und bei MechAssault2 getestet haben und es keine nennenswerte Verbesserung gab. (Und das noch unter VC6... wird heute wohl noch geringer sein, wobei sich das auch nicht überprüfen lässt)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

23

06.05.2009, 20:40

Ich vermute mal, dass es bei richtig großen Projekten durchaus nennenswerte Unterschiede geben dürfte.

n0_0ne

1x Contest-Sieger

  • Private Nachricht senden

24

07.05.2009, 07:05

Naja, aber nur wenn man sich den Unterschied absolut betrachtet. In Bezug auf das RICHTIG große Projekt, sind die dann auch wieder sehr klein und vernachlässigbar :D

K-Bal

Alter Hase

Beiträge: 703

Wohnort: Aachen

Beruf: Student (Elektrotechnik, Technische Informatik)

  • Private Nachricht senden

25

07.05.2009, 07:19

Zitat von »"David_pb"«



Nein ist es nicht. Compiler die #pragma once unterstützen können hier von den Vorzügen profitieren, ansonsten wird der Effekt über die Includeguards erzeugt.


Kannste das mal erklären?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

26

07.05.2009, 09:59

Zitat von »"K-Bal"«

Zitat von »"David_pb"«



Nein ist es nicht. Compiler die #pragma once unterstützen können hier von den Vorzügen profitieren, ansonsten wird der Effekt über die Includeguards erzeugt.


Kannste das mal erklären?


Der Compiler "sieht" ja das #pragma once und kann damit die Vorteile diesbezüglich nutzen (Dateien bei weiteren includes nicht erneut öffnen...). Wenn der Compiler #pragma once nicht unterstützt wird sollte der Compiler die Direktive ignorieren und nutzt die Guards.

Databyte

Alter Hase

  • »Databyte« ist der Autor dieses Themas

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

27

14.05.2009, 22:37

Wie ist das mit "memcpy" ? Ist das Platformabhängig ? Müsste ja eigentlich oder ?

28

14.05.2009, 23:33

memcpy ist in der C Standard Library enthalten.
Also müsste es "platformunabhängig" sein, wenn der Compiler (oder die library gegen die man das Programm linkt) ANSI/ISO C Standard konform ist. ;)

DasBlub

Alter Hase

Beiträge: 802

Wohnort: Schweiz

Beruf: Programmierer

  • Private Nachricht senden

29

15.05.2009, 09:34

memcpy() und memset() sind platformunabhängig.
aber achtung: ZeroMemory() ist windows-only! also benutz statt ZeroMemory(&dummy, sizeof(dummy)) lieber memset(&dummy, 0, sizeof(dummy));

Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

30

15.05.2009, 09:40

ZeroMemory ist nur ein define für das memset. Wenn man eben kurz die eine Zeile schreibt, dann klappt das auf jeder Platform.

Werbeanzeige