2017-11-14 1 views
-4

Der Funktionsaufruf unten generiert Compilerfehler:Funktionsaufruf als Erklärung interpretiert

void myfun() {} 

myfun(); // error: 
     // gcc -- error: expected constructor, destructor, or type conversion before ';' token 
     // clang -- error: C++ requires a type specifier for all declarations 

int main() 
{ 
    // ... 
} 

Kann jemand erklären? Wie wird der Funktionsaufruf mit einer Deklaration verwechselt? Warum verschwindet der Fehler, wenn der Funktionsaufruf innerhalb von main() verschoben wird?

+4

Sie können eine Funktion dort nicht anrufen. – DimChtz

+0

Funktionsaufrufe müssten innerhalb von main oder innerhalb einer anderen Funktion (oder Elementfunktion) gehen. – Steve

+0

_ "Diese Frage wurde durch ein Problem verursacht, das nicht mehr reproduziert werden kann oder ein einfacher Tippfehler. Ähnliche Fragen können hier zum Thema gehören Dieser wurde in einer Weise gelöst, die den zukünftigen Lesern wahrscheinlich nicht hilft. Dies kann oft vermieden werden, indem das kürzeste Programm identifiziert und genau untersucht wird, bevor das Problem reproduziert wird. "_ – user0042

Antwort

2

Sie können Funktionsaufrufe nicht außerhalb von Funktionen ausführen, wenn Sie sie nicht zur Variableninitialisierung verwenden. So schreiben Sie sollten ...

void myfun() {} 

int main() 
{ 
    myfun(); 
} 

oder

int myfun() { return 1; } 

int dummy = myfun(); 

int main() { 
} 
Verwandte Themen