Eigene externe Funktion erstellen
-
Hallo,
wie kann man ein eigenen Befehl in C++ erstellen.
Zum Beispiel://rechnen.cpp int zahl1, zahl2 void rechnen(void) { zahl1 + zahl2; }//rechnen.h extern void rechnen(void);//main.cpp #include <iostream> int main (void) { rechnen(8,9); std::cout << Zahl: << rechnen << ! << endl; return 0; }Ich möchte das 8 = zahl1 ist und 9 = zahl2 ist.
Wie mach ich das? Ich lerne noch C/C++, und will mal wissen wie man externe Funktionen erstellen kann
LG
-
Im Prinzip so wie du das gemacht hast, bis auf ein paar Kleinigkeiten:
-Der Header "rechnen.h" muss in main.cpp inkludiert werden
-Wenn die Funktion Argumente haben soll, gib ihr auch Parameter:int zahl1, zahl2 void rechnen(void)->
void rechnen(int zahl1, int zahl2)-Wenn die Funktion etwas zurückgeben soll, gib ihr auch einen Rückgabewert:
void rechnen(int zahl1, int zahl2) { zahl1 + zahl2; }->
int rechnen(int zahl1, int zahl2) { return zahl1 + zahl2; }(Deklaration im Header dann auch anpassen)
-Funktion wie andere auch Aufrufen:int result = rechnen(8, 9); std::cout << result; // bzw. direkt std::cout << rechnen(8, 9);(Was std::cout << rechnen macht ist folgendes: Es wird eine passende Überladung des operator<< gesucht, in die eine Funktion - der Typ von rechnen - konvertiert werden kann. Dazu wird die Funktion einen Zeiger auf eine Funktion automatisch umgewandelt. Die nächste passen Überladung wäre der operator<< für bools, es wird also ausgegeben ob die Addresse der Funktion != 0 ist. Das ist per Definition immer der Fall, also ist die Ausgabe 1.)
-
rechnen.hpp
#ifndef DIES_IST_EIN_INCLUDE_GUARD_FUER_RECHNEN_DAS_MUSS_MAN_WISSEN #define DIES_IST_EIN_INCLUDE_GUARD_FUER_RECHNEN_DAS_MUSS_MAN_WISSEN // Hier wird die "Schnittstelle" von rechnen.cpp verraten // damit man das, was in rechnen.cpp steckt, auch woanders // verwenden kann ... extern int addiere(int x, int y); // das extern ist hier eigentlich überflüssig // und kann man auch weglassen, da so eine // Funktionsdeklaration schon per Default eine // Funktion mit externer Bindung deklariert. #endifrechnen.cpp
#include "rechnen.hpp" // Hier ist die passende DEFINITION dazu, wo wir dem Compiler auch verraten, // wie die Funktion eigentlich arbeitet. Diese Details muss ein Benutzer // nicht wissen, so lange die Schnittstelle klar ist. int addiere(int x, int y) { return x+y; } #endifmain.cpp
#include <iostream> #include "rechnen.hpp" // ...ist nötig, damit der Compiler später auch // die Funktion addiere aufrufen kann. Deswegen // gibt's ja diese Header-Dateien. int main() { int x = 8; int y = 9; int z = addiere(x,y); std::cout << x << " + " << y << " = " << z << std::endl; return 0; }
-
Kann man in der rechnen.cpp auf zahl1 durch #define zahl1 ersetzten?
Währe übersichtlicher
-
Kann man sowas auch ohne rechnen.cpp machen?
Und NEIN, man kann das nicht mid #define machen!