Frage von panakotta00, 62

[C/C++] gegenseitiges ausführen von Funktionen in zwei Dateien?

Hi. Wie ermögliche ich es zwei Dateien gegenseitig ihre Funktionen nutzbar zu machen?

Antwort
von regex9, 16

Es ist eigentlich nicht ratsam, solche Beziehungen zwischen 2 Dateien aufzubauen, denn es macht das Programm unübersichtlich.

Doch so funktioniert es:

main.cpp:

extern int average(int a, int b);


int main(int argc, char **argv)
{
return average(3, 6);
}

int summe(int a, int b)
{ return a + b;
}

api.cpp:

extern int summe(int a, int b);


int average(int a, int b)
{
return summe(a, b) / 2;
}

Allerdings muss die Funktion im Vorfeld deklariert werden. Das Schlüsselwort extern davor kann als optional betrachtet werden, denn Funktionsdeklarationen werden eh standardmäßig als extern interpretiert. Weitere Informationen dazu findest du hier: http://stackoverflow.com/questions/856636/effects-of-the-extern-keyword-on-c-fun...

Expertenantwort
von TeeTier, Community-Experte für programmieren, 9

Zwei Dateien? Gegenseitig? Das kann leider sehr viel heißen! :)

Eigentlich musst du nur alles ordentlich in Header und Implementierung aufteilen, dann löst sich dein Problem dank statisch gelinkter Bibliotheken oder einfach nur Objekt-Dateien von selbst. :)

Evtl. ist dein Stichwort "Vorwärtsdeklaration". Wenn A und B sich gegenseitig nutzen können sollen.

Aber falls es dir darum geht, zur Laufzeit Funktionen von Programm A in Programm B und umgekehrt zu benutzen, dann guck dir mal an, wie dynamisch gelinkte Bibliotheken funktionieren.

In jedem Falle keine große Sache. Allerdings kann man dir nicht weiter helfen, ohne genau zu wissen, was du tun möchtest. So wie deine Frage im Moment formuliert ist, könnte es alles Mögliche bedeuten.

Trotzdem viel Erfolg! Irgendwie schaffst du das sicher! ;)

PS: Wie in der anderen Antwort erwähnt, solltest du in Erwägung ziehen, dein Design zu überdenken. Ich halte es anhand deiner Aussagen für sehr wahrscheinlich, dass es bei deinem Projekt Optimierungspotential gibt. ;)

Antwort
von ByteJunkey, 35

Wie meinst du das mit "zwei Dateien"?

Kommentar von panakotta00 ,

main.cpp und api.cpp

Kommentar von ByteJunkey ,

Also du meist, dass du (zB.) in der API-Klasse Methoden hast, die du dann anschließend in der main.cpp aufrufst?

Kommentar von panakotta00 ,

genau, die aber dann wieder auf main.cpp Funktionen ausführen

Kommentar von ByteJunkey ,

Ja das ist eigentlich recht einfach: Du erstellst eine api.hpp, deklarierst und definierst dort eine Funktion. Danach gehst du in main.cpp, schreibst ganz oben #include "api.hpp" und schon kannst du auf die Funktion zugreifen

Kommentar von panakotta00 ,

hier mal etwas code:

#include "api.cpp"
#include <stdio.h>

void main() {
  printf("%i", rechnung(3, 5));
}

int summe(int x, int y) {
  return x + y;
}
#include "main.cpp"

int rechnung(int x, int y) {
  return summe(x, x) + summe(y, y);
}

so ähnlich wllte ich das

Kommentar von ByteJunkey ,

api muss eine Header sein und du musst in api.hpp nicht main.cpp inkludieren;)

Kommentar von ByteJunkey ,

So klappt es bei mir:

api.hpp:

#pragma once

int summe(int x, int y)
{
return x + y;
}

main.cpp:

#include <iostream>
#include "api.hpp"

int rechung(int x, int y)
{
return summe(x, x) + summe(y, y);
}

// MAIN //
//////////
int main()
{
int x, y;

std::cout << "x: ";
std::cin >> x;
std::cout << "y: ";
std::cin >> y;

std::cout << rechung(x, y);

std::cin.get();
std::cin.get();
return 0;
}


Keine passende Antwort gefunden?

Fragen Sie die Community