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

Anonymous

unregistriert

1

05.09.2003, 17:49

Von welchen Typen sind __LINE__, __FUNKTION__, FILE__ ...

... und mit welchen %x Zeichen kann man sie in sprintf einbringen?

CuTeX0r

Treue Seele

Beiträge: 174

Wohnort: Deutschland

  • Private Nachricht senden

2

05.09.2003, 18:02

also __LINE__ usw sind per #define definierte Makros, haben also gar keinen Typ.
zu dem sprintf o.Ä:
bei __LINE__ %i, __FUNCTION__ und __FILE__ usw nimmste %s...

also ich glaub dass es so ist ;D

Anonymous

unregistriert

3

05.09.2003, 18:38

Aber bei

Quellcode

1
#define __LINE__ 8

hat __LINE__ den Typ int, bei

Quellcode

1
#define __LINE__ 1.0f

hat __LINE__ den Typ float, ...

Patrick

Alter Hase

Beiträge: 1 264

Wohnort: Düren

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

05.09.2003, 21:02

@CuTeX0r:
bitte %d und net %i ;D

@Gast:
ähme nein, __LINE__ ist kein Typ, sondern ein PräProzessor Makro deines C98 Compilers. __LINE__ gibt wenn schon einen "unsigned int" wieder und __FILE__ einen "unsigned char*"

#define VARIABLE 1

ist KEIN int, es ist KEIN Dateityp! Es ist text und kein Typ.

Edit:
Beispiel:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#define VARIABLE 1

class MyClass
{
public:
      void function (float value);
      void function (unsigned double value);
      void function (signed int value);
      void function (double value);
      void function (wchar_t value);
      void function (DWORD value);
      void function (signed char value);
      void function (const signed float value);
      void function (const signed wchar_t value);
      void function (const unsigned wchar_t value);
      void function (const DWORD value);
      void function (const WORD value);
      void function (bool value);
      void function (double value);
};

MyClass Test;

Test.function (VARIABLE);


Na was meinste welche überladene Funktion wird aufgerufen? Könnte die 1. sein könnte die 5. sein oder sogar die 6.! Tja welche wird aufgerufen?

Du weist es nicht da #define kein Typ ist und deshalb Typunsicher ist. Der Compiler schnappt sich einfach eine Funktion durch zufall, obs die richtige ist oder net ist im doch egal, da denkt er sich: Tja blöder Programmierer, sein Pech wenn er #define für Variablen benutzt und net weis das sie auf Textbasis arbeitet.

schreib anstatt #define VARIABLE 1 IMMER den typ und davor das Const. denn das ist Typsicher.[/quote]

Werbeanzeige