unabhängig kompilierbare Softwareelemente in VS 2019



  • Hi, leider habe ich keinen präziseren Titel für meine Frage gefunden, daher will ich sie so einmal genauer beschreiben.
    Ich habe zwei Funktionen in c, eine int worker() und eine int main(). In der main stehen Variablen drin, die ich auch im worker verwenden möchte, was auch kein Problem ist. Nun verändere ich diese Variablen aber permanent und möchte vermeiden, dass nach jeder Veränderung das gesamte Projekt neu kompiliert werden muss und suche daher nach einem Weg, die int main unabhängig vom int worker zu gestalten, so dass ich nur die main Funktion neu kompilieren muss. Das sollte ja kein Problem sein, da die werte ja erst kopiert werden und dann an die andere Funktion weitergegeben werden, jedoch weiß ich nicht wie ich das in MS Visual Studio 2019 bewerkstelligen soll. Hat da jemand Tipps/ Ideen?
    Danke im Voraus.



  • Prosa bei Fragen ist häufig unklar. Code hilft meistens besser.

    @julianmaximilian sagte in unabhängig kompilierbare Softwareelemente in VS 2019:

    Ich habe zwei Funktionen in c, eine int worker() und eine int main(). In der main stehen Variablen drin, die ich auch im worker verwenden möchte, was auch kein Problem ist.

    So weit, so klar. Aber ist die int worker() wirklich eine Funktion mit 0 Parametern? Oder handelt es sich um int worker(typ variable1, typ2 variable2, ...), denn du willst ja die main-Variable in worker verwenden?

    Nun verändere ich diese Variablen aber permanent

    Oder handelt es sich bei dem Worker um einen Thread und du suchst nach sowas wie std::atomic aus C++? Was bedeutet "permanent" für dich genau?

    und möchte vermeiden, dass nach jeder Veränderung das gesamte Projekt neu kompiliert werden muss und suche daher nach einem Weg, die int main unabhängig vom int worker zu gestalten, so dass ich nur die main Funktion neu kompilieren muss.

    Huch? Jetzt bin ich raus!

    Oder möchtest du ggf. dein Programm in main.c und worker.h/worker.c aufteilen? Dann musst nur nur main.c neu kompilieren und das Programm linken, wenn du in main.c was änderst.



  • okay, zweiter Anlauf:

    int worker(test, testWert, gratulationTest, schadeTest)
    {
    

    Das ist mein worker

    int main()
    {
    	int test = 0;
    	int testWert = 10;
    	int gratulationTest = 0;
    	int schadeTest = 1;
    	worker(test, testWert, gratulationTest, schadeTest);
    	return 0;
    }
    

    und das meine main. Die main würde ich eben gerne unabhängig gestalten, so dass die Variablen mit jedem neuen Wert neu übergeben werden, ich den worker aber nicht ständi neu kompilieren muss



  • Ah. Dann (ich schrieb):

    Oder möchtest du ggf. dein Programm in main.c und worker.h/worker.c aufteilen? Dann musst nur nur main.c neu kompilieren und das Programm linken, wenn du in main.c was änderst.

    Alternativ könntest du auch einfach test, testWert, gratulationTest, schadeTest von der Kommandozeile einlesen oder beim Programmstart abfragen oder aus einer Datei einlesen.



  • Ahh, Danke! Wie das genau geht erfahre ich ja sicherlich auf der Website von Visual Studio. 🙂



  • Ich würde erstmal fragen wieso du die worker() Funktion nicht jedes mal neu kompilieren willst.
    In grossen Projekten macht das natürlich Sinn, da dort das Übersetzen hübsch lange dauert. Aber irgendwo hab ich den Verdacht dass das bei dir nicht der Fall ist.



  • Willst Du denn die main - Funktion jedes Mal neu übersetzen?
    Falls ja, siehe Kommentar von hustbaer, dann macht es überhaupt keinen Sinn (bei Deinen paar Zeilen), die worker - Funktion nicht gleich mit zu übersetzen ...
    Aber wahrscheinlich möchtest Du eher, was wob schreibt, spekuliere ich mal ...


Log in to reply