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

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

21

18.07.2007, 00:04

ich kenne nur
#pragma warning(disable : [nummer])
damit lassen sich die warnungen aber nur selektiv abschalten

probier einfach mal
#pragma warning(push, 1)
#include <allegro.h>
#pragma warning(pop)
"Don't trust your eyes: They are a hell of a lot smarter than you are"

22

18.07.2007, 00:13

Es bleibt wirkungslos...

Ein

C-/C++-Quelltext

1
#pragma warning(push, 0) 

allerdings reduziert die Warnungen von 53 auf 11 Allegro Warnungen...
Es sind alles solche Warnunge:

Quellcode

1
2
3
4
5
6
7
8
9
10
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\internal\alconfig.h(395) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned char *'
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\internal\alconfig.h(402) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned char *'
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\inline\draw.inl(421) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned char *'
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\inline\draw.inl(435) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned char *'
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\inline\draw.inl(446) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned short *'
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\inline\draw.inl(460) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned short *'
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\inline\draw.inl(471) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned short *'
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\inline\draw.inl(485) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned short *'
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\inline\draw.inl(521) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned int *'
c:\programme\allegro\allegro for ms vc++ 8\include\allegro\inline\draw.inl(535) : warning C4312: 'Typumwandlung': Konvertierung von 'unsigned int' in größeren Typ 'unsigned int *'

Jetzt müsste ich es nurnoch auf 0 Warnugnen kriegen :-)

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

23

18.07.2007, 08:26

Zitat von »"tobb"«

@Ba'el:
Ich vermute du meinst abstrakte Funktionen, die mit einem "= 0" deklariert werden und nicht definiert werden.


Wie bereits gesagt. Ein Destruktor muss immer Definiert werden, ganz egal ob virtuell, rein virtuell oder nicht virtuell.

Wegen der Warnungen:

C-/C++-Quelltext

1
#pragma warning( disable: 312 )


Allerdings solltest du lieber auf die Warnungen achten und versuchen diese zu beseitigen statt zu unterdrücken!
@D13_Dreinig

24

18.07.2007, 13:43

Zitat von »"David_pb"«


Wegen der Warnungen:

C-/C++-Quelltext

1
#pragma warning( disable: 312 )


Allerdings solltest du lieber auf die Warnungen achten und versuchen diese zu beseitigen statt zu unterdrücken!


Danke. Wie ich ja bereits geschrieben habe, kommen die Warnungen aus einem Header, den ich nicht geschrieben habe, sondern der von der Bibliothek Allegro kommt. Und des weiteren wurde der in C geschrieben, was wohl einige "Typenkonvertierungs-Warnungen" hervorruft.

Was bedeutet diese 312? Und wie kann ich di Warnungen im COde später wieder einschalten?

Gibt es eigentlich ein Makro das Signalisiert, dass MS VC++ benutzt wird?

ChrisJ

Alter Hase

Beiträge: 487

Wohnort: Schweich

Beruf: Schüler

  • Private Nachricht senden

25

18.07.2007, 13:47

312 ist die nummer der warnung... C4312
einschalten geht wieder per #pragma warning(enable : [s.th])
"Don't trust your eyes: They are a hell of a lot smarter than you are"

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

26

18.07.2007, 13:49

Die 312 kennzeichnet die Nummer der Warnung. Zahlen zwischen 0-999 werden 4000 hinzuaddiert. Du hättest also auch schreiben können #pragma warning( disable: 4312 ).

Durch push und pop kannst du die Warnung wieder anschalten:

C-/C++-Quelltext

1
2
3
4
#pragma warning( push )
#pragma warning( disable: 312 )
#include <deinheader.h>
#pragma warning( pop )


Es gibt ein Macro, ja:

C-/C++-Quelltext

1
2
3
#ifdef _MSC_VER
// do something microsoft specific

#endif
@D13_Dreinig

27

19.07.2007, 00:05

Sachtma mit diesem blöden Pragma kann man ja nicht mal Makros machen... weils scheinbar auch MS spezifische Präprozessorbefehle sind

C-/C++-Quelltext

1
2
3
4
5
6
7
#ifdef _MSC_VER
    #define DISABLE_MSC_WARING_312 #pragma warning(push) \ #pragma warning(disable: 312)
    #define ENABLE_MSC_WARING_312 #pragma warning(pop)
#else
    #define DISABLE_MSC_WARING_312
    #define ENABLE_MSC_WARING_312
#endif

Geht nicht... dreck... lol

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

28

19.07.2007, 07:51

Sollst du ja auch nicht.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
#ifdef _MSC_VER
    #pragma warning( push )
    #pragma warning( disable: 312 )
#endif

#include <xyz.h>

#ifdef _MSC_VER
    #pragma warning( pop )
#endif


Und #pragma ist übrigens nicht Microsoftspezifisch.
@D13_Dreinig

29

19.07.2007, 13:02

Wie soll ich nicht?

So wie du es mir vorschlägst habe ich es erst gemacht und dann gedacht dass es ziemlich hässlich aussieht so viel Code hinzuklatschen nur um einen Header einzubinden... das hatte ich nämlich in sehr vielen Dateien dann so stehen.
Deshalb wollte ich kurze Makros draus machen.

Ich denke ich werde einen eigenen Allegro-Header bilden.


Und wenn pragma nicht MS spezifisch ist, woher kommt es dann?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

30

19.07.2007, 13:08

Du kannst keine Preprozessordirektiven in Preprozessordirektiven zusammenfassen... Das sollst du nicht.

Pragma kommt aus dem C++ Standard! Woher sonst? :)
@D13_Dreinig

Werbeanzeige