Lokale Funktionen in C/C++ ISO spezifiziert
-
Hallo,
kann mir hier jemand sagen ob lokale Funktionen zulässig sind und im C und/oder C++ Standard definiert sind?
void main() { lokfun() { } lokfun(); }
-
Nö.
-
Das ist weder in C noch in C++ standardisiert. Der GCC kennt es als Erweiterung.
Alternativen:
-Lokale structs mit statischen Methoden
-Globale Funktionen mit lokaler Deklaration
-Lambda-Ausdrücke
-
Und noch ein Hinweis für dich, int main und NICHT void main.
-
Gugelmoser schrieb:
Und noch ein Hinweis für dich, int main und NICHT void main.
Du hast recht, das wusste ich aber.
SeppJ schrieb:
Alternativen:
-Lokale structs mit statischen Methoden
-Globale Funktionen mit lokaler Deklaration
-Lambda-AusdrückeDiese alternativen sind standardisiert?
Sprechen wir hier von diesen alternativen, deklariert in einer Funktion?Kannst Du mir zu
-Lokale structs mit statischen Methoden
-Globale Funktionen mit lokaler Deklaration
Beispiele nennen?
-
-Lokale structs mit statischen Methoden:
int main() { struct Foo { static void Bar() { } } Foo::Bar(); }
-Globale Funktionen mit lokaler Deklaration:
Ich denke mal, dass das gemeint ist:namespace { void Bar(){} } int main() { Bar(); }
-
Ich finde das hier irgendwie ganz schick.
#include <iostream> int main() { using std::cout; struct { int operator()(int i) // edit: http://www.c-plusplus.net/forum/294092 { return i*i; } }square; cout << square(5); // square ist nun sozusagen deine lokale Funktion. }
-
Q schrieb:
-Globale Funktionen mit lokaler Deklaration:
Ich denke mal, dass das gemeint ist:namespace { void Bar(){} } int main() { Bar(); }
nein, ich glaube eher er meint sowas:
int main() { void foo(int); foo(5); return 0x0; } void foo(int i) { // ... }
-
Skym0sh0 schrieb:
Q schrieb:
-Globale Funktionen mit lokaler Deklaration:
Ich denke mal, dass das gemeint ist:namespace { void Bar(){} } int main() { Bar(); }
nein, ich glaube eher er meint sowas:
int main() { void foo(int); foo(5); return 0x0; } void foo(int i) { // ... }
Das ist ja furchtbar!
-
das ist ne andere sache
du hat danach gefragt...
-
Skym0sh0 schrieb:
das ist ne andere sache
du hat danach gefragt...
Ja stimmt. Bin Dir auch dankbar dafür!
-
Anaconda55 schrieb:
Skym0sh0 schrieb:
Q schrieb:
-Globale Funktionen mit lokaler Deklaration:
Ich denke mal, dass das gemeint ist:namespace { void Bar(){} } int main() { Bar(); }
nein, ich glaube eher er meint sowas:
int main() { void foo(int); foo(5); return 0x0; } void foo(int i) { // ... }
Das ist ja furchtbar!
was ist jetzt daran so furchtbar.
Ich glaube wenn es so viele verschiedene ansätze gibt , solltest du deine Frage neu formulieren
-
7xCore schrieb:
Anaconda55 schrieb:
Skym0sh0 schrieb:
Q schrieb:
-Globale Funktionen mit lokaler Deklaration:
Ich denke mal, dass das gemeint ist:namespace { void Bar(){} } int main() { Bar(); }
nein, ich glaube eher er meint sowas:
int main() { void foo(int); foo(5); return 0x0; } void foo(int i) { // ... }
Das ist ja furchtbar!
was ist jetzt daran so furchtbar.
Ich glaube wenn es so viele verschiedene ansätze gibt , solltest du deine Frage neu formulierenIch finde es sehr unübersichtlich.
-
Anaconda55 schrieb:
Ich finde es sehr unübersichtlich.
Und welche Alternative findest du nun annehmbar?
-
Lambda-Ausdrücke finde ich gut.
Meine Frage war allerdings nur wegen den lokalen Funktionen, aber diese Frage wurde ja bereits beantwortet.
-
Preisfrage: Woran erkennt man dass das Design Kacke ist?