Ich frage mich, ob es möglich ist, dass Sie zwei Funktionen schreiben können, in denen eine Funktion vor der Hauptfunktion ausgeführt wird und die andere Funktion nach der Hauptfunktion ausgeführt wird ?? Dies wurde in einem Quiz-Wettbewerb gefragt, und ich finde es schwierig, die Antwort darauf zu suchen.Hauptfunktion Konzept in C
Antwort
Für Sachen an der Ausfahrt laufen, können Sie atexit
#include <stdio.h>
#include <stdlib.h>
void we_are_dying()
{
printf("Get the doctor!\n");
}
int main(void) {
atexit(we_are_dying);
// your code goes here
printf("We are done\n");
return 0;
}
Sachen für Lauf verwenden, bevor Haupt ich glaube nicht, das möglich ist.
Nun, Sie könnten die CRT hacken, um 'preMain()' vor dem Aufruf von main() zu nennen, aber das erscheint genauso sinnlos wie die Frage des OPs sowieso. –
Der GCC-Compiler (GNU Compiler Collection) hat viele Erweiterungen hinzugefügt, die häufig übersehen wurden. Diese zusätzlichen Erweiterungen können uns helfen, die Entwicklung von C-Anwendungen zu vereinfachen. Eine der Erweiterungen war das Hinzufügen von Attributen. Basierend auf dem angegebenen Attribut können wir den Compiler anweisen, Funktionen oder Variablen speziell zu behandeln.
Mit dem Konstruktorattribut können wir die Funktionen angeben, die vor und nach der Ausführung der Funktion main()
ausgeführt werden sollen. Siehe das folgende Beispiel (entnommen von - https://www.hackerearth.com/notes/c-program-callling-a-function-before-main/).
#include<stdio.h>
/* Apply the constructor attribute to startFunc() so that it
is executed before main() */
void startFunc (void) __attribute__ ((constructor));
/* Apply the destructor attribute to lastFunc() so that it
is executed after main() */
void lastFunc (void) __attribute__ ((destructor));
void startFunc (void)
{
printf ("startup code before main()\n");
}
void lastFunc (void)
{
printf ("Function after main()\n");
}
int main (void)
{
printf ("In Main Function\n");
return 0;
}
Der Link, den ich über eine andere Art und Weise die Start- und Exit-Funktionen zu erreichen gezeigt erwähnt hat. Aber #pragma startup ..
#pragma exit ...
wird nicht in gcc unterstützt. In gcc und clang sollten Sie stattdessen __attribute__((constructor))
und __attribute__((destructor))
verwenden.
- 1. C++: Implementieren benutzerdefinierter Hauptfunktion
- 2. Schwierigkeit in NULL-Konzept in C?
- 3. Aufruf Methode in Hauptfunktion
- 4. Sequenzpunkt-Konzept in Java
- 5. Wie Argv Argumente von Hauptfunktion in C zu drucken?
- 6. LuaBridge läuft C++ Hauptfunktion in lua für Love2D
- 7. Warum funktioniert die statische Hauptfunktion in C++ nicht?
- 8. Dokumentieren Sie ein C++ - Konzept mit Doxygen?
- 9. Hauptfunktion gibt nichts zurück. Warum?
- 10. Cocoa: int Hauptfunktion
- 11. Konstruktor Konzept in Javascript
- 12. TDD-Konzept in Schienen
- 13. Reduzierung Konzept in Spark
- 14. Boost Unit Testing Hauptfunktion?
- 15. formales Konzept Analysis Tool
- 16. Gibt es das Java URIResolver-Konzept in C# und .NET?
- 17. Benötigen Sie Unterstützung in Bezug auf Objective-c Eigenschaften Konzept
- 18. JavaFX - Login Fenster in meine Hauptfunktion
- 19. Verwenden Befehlszeilenargumente in CPP andere als Hauptfunktion
- 20. Setup Hauptfunktion in Eclipse Makefile-Projekt
- 21. Welche Funktion in Glibc nennt die Hauptfunktion
- 22. Java-Konzept Vererbungshack?
- 23. Wie wird der Wert von JTextfield in der Hauptfunktion von außerhalb der Hauptfunktion deklariert?
- 24. sql-Locks-Konzept in sqlserver
- 25. MasterPage wie Konzept in Python
- 26. `Frachtpaket`: Fehler: Hauptfunktion nicht gefunden
- 27. Wie heißt dieses Konzept?
- 28. Wie man Funktion für dll (C++) von der Hauptfunktion herstellt, um in C#
- 29. Master-Kind-Seite Konzept in winforms
- 30. Xamarin MasterPage Konzept
Mögliche Duplikate: http://stackoverflow.com/questions/3974796/in-c-main-function-is-the-entry-point-to-program-how-i-can-change-it-to-to- an-oth – Matsmath