/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Test af om en void funktion er implementer~
Fra : Bertel Lund Hansen


Dato : 17-02-02 19:30

Hej alle

Kan man teste om en funktion af typen void er implementeret? Jeg
er interesseret i både ren C og C++.

Aktuelt er problemet at vi har fået en træningsopgave med nogle
terningslag hvor jeg ved hjælp af (uportable) conio-rutiner laver
en tekstskærmsbaseret animation. Det ville være rart at kunne
teste om det vil virke eller ej, for skolecompileren har ikke
disse rutiner indbygget.

altså
#if rutiner_virker
   // ingenting
#else
   void gotoxy(int a, int b) {}
   osv...
#endif

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

 
 
Ivan Johansen (17-02-2002)
Kommentar
Fra : Ivan Johansen


Dato : 17-02-02 21:18

Bertel Lund Hansen wrote:

> Aktuelt er problemet at vi har fået en træningsopgave med nogle
> terningslag hvor jeg ved hjælp af (uportable) conio-rutiner laver
> en tekstskærmsbaseret animation. Det ville være rart at kunne
> teste om det vil virke eller ej, for skolecompileren har ikke
> disse rutiner indbygget.
>
> altså
> #if rutiner_virker


Måske var det en ide at teste på compileren i stedet. Borlands compiler
definerer for eksempel __BORLANDC__. Andre compilere definerer
formentligt andre ting. Hvis du vil teste om det er Borlands compiler
bruges:
#ifdef __BORLANDC__

Det er også muligt at teste på versionen.

Ivan Johansen



Bertel Lund Hansen (17-02-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-02-02 22:01

Ivan Johansen skrev:

>Måske var det en ide at teste på compileren i stedet. Borlands compiler
>definerer for eksempel __BORLANDC__.

Fint. Det er faktisk nok til at klare mit problem.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Anders Wegge Jakobse~ (17-02-2002)
Kommentar
Fra : Anders Wegge Jakobse~


Dato : 17-02-02 21:33

"Bertel" == Bertel Lund Hansen <nospam@lundhansen.dk> writes:

> Hej alle
> Kan man teste om en funktion af typen void er implementeret? Jeg
> er interesseret i både ren C og C++.

> Aktuelt er problemet at vi har fået en træningsopgave med nogle
> terningslag hvor jeg ved hjælp af (uportable) conio-rutiner laver
> en tekstskærmsbaseret animation. Det ville være rart at kunne
> teste om det vil virke eller ej, for skolecompileren har ikke
> disse rutiner indbygget.

> altså
> #if rutiner_virker
>    // ingenting
> #else
>    void gotoxy(int a, int b) {}
>    osv...
> #endif

Det er normalt den slags man bruger GNU autoconf til at komme
udenom. Men det er nok lidt rigeligt at kaste sig over. Du kan prøve
at se om der er forskel i hvilke præprocessor symboler der er
defineret på hhv. den ene og den anden compiler. F. eks. er __GNUC__
næppe defineret for andre compilere end gcc.

Ellers kan du muligvis være heldig at have ikke bare en, men derimod
2 compilere der supportere svage[1] symboler, men hvis de gør, er de nok
desværre uenige om hvordan man gør :-/

En helt tredie mulighed var at lade være med at gøre sig afhængig af
ikke-portable features.

[1] Et svagt symbol er en konstruktion der ikke giver en linkerfejl,
hvis der refereres til et ikke-eksisterende symbol. En af de
compilere jeg har set benytte sig af det gør sådan:

#pragma weak BSP_Initialize
if (BSP_Initialize != NULL)
BSP_Initialize();

Man kan mene hvad man vil om ovenstående, men det er åbenbart
begrænset hvad man får for 60.000 $

--
/Wegge

Bertel Lund Hansen (17-02-2002)
Kommentar
Fra : Bertel Lund Hansen


Dato : 17-02-02 21:58

Anders Wegge Jakobsen skrev:

> En helt tredie mulighed var at lade være med at gøre sig afhængig af
>ikke-portable features.

Den er jeg helt med på, men det her drejer sig om en øvelse hvor
jeg gerne vil pifte programmet lidt op.

--
Bertel
http://lundhansen.dk/bertel/   FIDUSO: http://fiduso.dk/

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste