Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
21.11.2001, 22:25
Creeper



Hi, ich frag ja andauernd. Also iwe kann ich eine ganze Funktion als Parameter übergeben, der dann ausgeführt wird ?

Quellcode:
void FuncCall( func newfunc() )
{
newfunc();
}

void main()
{
funccall( main );
}

so in der Art. Versteht ihr was ich meine ?

--

Head Coder:Sudden-Impact

Listen to CKY you fuCKYrs http://www.ckymusic.com

zum Seitenanfang zum Seitenende Profil || Suche
001
21.11.2001, 22:38
Tron



gleich im vorraus: von der main funktion kann man keinen pointer bekommen, also schlechtes beispiel

aber allgemein:

bool SomeFunc(int)
{
// irgendeine funktion die uebergeben werden soll
}

void CallingFunc(bool (*pFunc)(int))
{
if (pFunc(123)) ...
}

int main()
{
CallingFunc(SomeFunc); // kein & vor SomeFunc, da der name der funktion ohne () ein pointer ist
}

das if ist natuerlich nur ein beispiel, und der rueckgabewert sowie die parameter der funktion sind natuerlich auch frei waehlbar

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
002
21.11.2001, 23:30
Creeper



danke

--

Head Coder:Sudden-Impact

Listen to CKY you fuCKYrs http://www.ckymusic.com

zum Seitenanfang zum Seitenende Profil || Suche
003
22.11.2001, 14:32
Prefect



Zitat:

gleich im vorraus: von der main funktion kann man keinen pointer bekommen, also schlechtes beispiel

Was hindert dich daran?

Man kann von main() sehr wohl einen Pointer bekommen, immerhin ist C eine konsequente Sprache. Tatsächlich ist dies sogar essentiell. Auf der Basis dieser Fähigkeit haben Leute schon komplette WinAPI (!)-Programme in einer einzigen Funktion geschrieben :P

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche
004
22.11.2001, 15:50
Tron



hmm... in c geht das, aber ich glaube mich zu erinnern gelesen zu haben, dass das in c++ nicht geht (soviel zum thema abwaertskompatibilitaet)

ich hab's mal schnell mit dem compiler von borland ausprobiert:
Quellcode:#include <iostream.h>

int main()
{
  cout << (void*)main << endl;
  return 0;
}

der compiler meint dann:
cannot take address of function main ):

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
005
22.11.2001, 18:02
Kriz



Na ja, VC++ spuckt beispielsweise aus: 0x00401019

Soviel zum Thema was C++ angeblich nicht kann =)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
006
22.11.2001, 20:13
Tron



seit wann entspricht vc++ dem ansi-c++ standard? *g*

aus der borland-c++-hilfe (bcb5errs.hlp)

Zitat:
E2012 Cannot take address of 'main' Compiler error
In C++, it is illegal to take the address of the main function.

--

'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams

'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett

zum Seitenanfang zum Seitenende Profil || Suche
007
22.11.2001, 23:08
Kriz



Das sagt Borland, aber wenn der Rest was anderes dazu sagt?!?! Ich sehe auch keinen Grund, warum man von main() die Adresse nicht bekommen sollte.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
008
23.11.2001, 14:34
Prefect



Zitat:

prefect@leprechaun:~/Develop > cat main.c
#include <stdio.h>

int main()
{
printf("main(): %p\n", main);
return 0;
}
prefect@leprechaun:~/Develop > gcc -Wall -o main main.c
prefect@leprechaun:~/Develop > ./main
main(): 0x8048400
prefect@leprechaun:~/Develop >

=)

Ach ja:

Zitat:

prefect@leprechaun:~/Develop > gcc --version
2.95.2

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.


Dieser Beitrag wurde am 23.11.2001 um 14:36 von Prefect bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche