PDA

View Full Version : c++


Rouli
13-06-2005, 11:05
ΕΧΩ ΕΝΑ ΠΡΟΒΛΗΜΑ ΣΕ ΚΩΔΙΚΑ ΤΗΣ C++.
ΠΩΣ ΜΠΟΡΩ ΝΑ ΒΑΛΩ ΜΕΣΑ ΣΕ ΕΝΑ ΠΡΟΓΡΑΜΜΑ ΝΑ ΚΑΛΕΙ ΕΝΑ ΑΛΛΟ?
ΥΠΑΡΧΕΙ ΚΑΠΟΙΑ ΣΥΓΚΕΚΡΙΜΕΝΗ ΣΥΝΑΡΤΗΣΗ ΠΟΥ ΚΑΛΕΙ ΤΟ ΠΡΟΓΡΑΜΜΑ?
ΚΑΙ ΤΑ 2 ΠΡΟΓΡΑΜΜΑΤΑ ΒΡΙΣΚΟΝΤΑΙ ΣΤΟΝ ΙΔΙΟ ΦΑΚΕΛΟ.

circular
13-06-2005, 11:19
Χρησιμοποιησε την εντολή system("other_program.exe");

DarthMoul
13-06-2005, 11:57
Όπως σου είπε και ο circular, υπάρχει η system που κάλει άλλο πρόγραμμα, όχι απαραίτητα C, μέσω του shell. Ακόμα υπάρχει και η οικογένεια συναρτήσεων exec στο unix καθώς και η οικογένεια spawn στο DOS οι οποίες προϋποθέτουν το κληθέν πρόγραμμα να αναγνωρίζει C calling convention.

Rouli
13-06-2005, 12:48
ΑΝ ΘΕΛΩ ΝΑ ΚΑΛΕΣΩ ΑΛΛΟ ΠΡΟΓΡΑΜΜΑ ΤΟ ΟΠΟΙΟ ΕΙΝΑΙ ΚΑΙ ΑΥΤΟ C++ ΘΑ ΠΡΕΠΕΙ ΝΑ ΒΑΛΩ ΤΗΝ ΣΥΝΑΡΤΗΣΗ system("other_program.cpp");?
ΧΡΕΙΑΖΕΤΑΙ ΝΑ ΒΑΛΩ ΣΤΗΝ ΑΡΧΗ ΚΑΙ ΚΑΠΟΙΟ include Η ΘΑ ΤΟ ΑΝΑΓΝΩΡΙΣΕΙ ΚΑΤΕΥΘΕΙΑΝ?

circular
13-06-2005, 12:54
Κατ'αρχην θα σε παρακαλεσω αν μπορεις μη γραφεις με κεφαλαια γιατι φαινεται σαν να φωναζεις. Για να χρησιμοποιησεις τη system θα μεταγλωττίσεις πρωτα το δευτερο σου πρόγραμμα σε εκτελέσιμο και επειτα στην κληση της system θα βαλεις το ονομα του εκτελεσιμου,

Yiagos
14-06-2005, 00:18
#include <stdlib.h> /* Για την system */
#include "My_file.cpp" /* Πρέπει να είναι στον ίδιο φάκελο */

void main (void) /* Βάλε και χωρίς τα void αν δεν έχει πρόβλημα */
{
system("dir /s");
system("My_executable.exe");
}


Βασικά τη system εντολή θα τη χρησιμοποιήσεις μόνο αν θες κάτι για DOS.
Αν πας σε Windows περιβάλλοντα τότε έχουν έτοιμα δικά τους κόλπα. ;)

circular
14-06-2005, 10:27
@Yiagos: Δεν χρειαζεται να include κανενα cpp Αρχείο, ίσα ίσα αυτό θα προκαλέσει σφάλμα στη μεταγλώττιση (ύπαρξη 2 συναρτήσεων main). Οποτε απλα αν βγαλεις τη 2η γραμμη απο τον κωδικα εισαι οκ.

chaos
14-06-2005, 13:25
ΜΑλλον circular δεν πρεπει να εχουν καταλαβει τη χρηση της system("PATH/ANY_EXECUTABLE.EXE").
Για παραδειγμα αυτος ο κωδικας ανοιγει το notepad.exe.
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
system("C:/windows/notepad.exe");
return 0;
}
Ο κωδικας ειναι απαραιτητος αν και μονο αν καλεσεις ενα υποπρογραμμα μεσα απο την κυρια ρουτινα .Δηλαδη

#include<stdio.h>
#include<stdlib.h>

#include"path_to_subroutine/subroutine.c"
//Προσοχή στο scope των μεταβλητων.
int main(void)
{
{
// Ρουτινα κυριου προγραμματος κτλ.
}
subroutine();//Οταν ολοκληρωθει η εκτελεση εχουμε την επιστροφη
//της ροης του προγραμματος στη main.
return 0;
}

Οριστε ο ορισμος της system...
#include <stdlib.h>
int system(const char* s);

Passes s to environment for execution. If s is NULL, non-zero returned if command processor exists; return value is implementation-dependent if s is non-NULL.

Rouli
14-06-2005, 18:38
Ευχαριστώ πολύ για την βοήθεια....
Τελικά δουλεύει μόνο με την εντολή system("other_program.exe"); και δεν χρειάζεται τίποτα άλλο....