2016-12-07 8 views
-3

J'ai deux programmes que j'ai écrit en code C les deux ont une fonction principale (je ne pouvais pas exécuter le programme sans fonction principale) maintenant je veux créer un seul fichier principal dire main.c d'où je peux appeler ces deux fonctions. Comment puis je faire ça ? S'il vous plaît suggérer .. Je suis relativement très nouveau à la programmation c.C code: Appel de la fonction principale

Rk4solution.c

#define beginrk4 main 
int func (double t, const double y[], double f[], void *params) 
{} 
int beginrk4() /*** main function ***/ 

Rk8pdsolution.c

#define beginrk8pd main 
int func (double t, const double y[], double f[], void *params) 
{} 
int beginrk8pd() /*** main function ****/ 

Comment créer une fonction principale d'appeler ces deux?

+0

Quelle est la séquence? comment voulez-vous que ces fonctions soient appelées? –

+0

2. SO ne se substitue pas à se pencher vers le programme –

+0

@SouravGhosh: La séquence n'est pas importante .. J'ai créé ceux-ci pour résoudre l'équation différentielle de second ordre en utilisant GSL lib. – ausworli

Répondre

0

Conversion de commentaires en réponse.

Vous semblez avoir une fonction globale appelée func() dans chaque fichier source, et aussi une paire de noms de fonction beginrk4 et beginrk8pd que vous associez à main(). C'est deux conflits - deux func() et deux main().

Vous devez donner à chaque son propre nom et supprimer les fonctions main() dans les fichiers individuels. Vous vous retrouvez avec deux fichiers source, un pour rk4 (par exemple rk4.c) et un pour rk8pd (rk8pd.c), et deux têtes (rk4.h et rk8pd.h ) — or possibly one header rk.h — for declaring the functions. You then write a main() function in a third source file ( main.c`) qui appelle l'autre fonctions, et inclut l'en-tête (s) pour déclarer les fonctions.

obtenir encore l'erreur main.c:(.text+0xa): undefined reference to `beginrk4'

Ai-je besoin de donner le nom de fichier spécifique par gcc?

gcc -I$TACC_GSL_INC -I$TACC_GRVY_INC -L$TACC_GRVY_LIB -L$TACC_GSL_LIB -lgsl -lgslcblas -lgrvy main.c 

Oui; si vous avez trois fichiers source: main.c, rk4.c et rk8pd.c, alors vous avez différentes options, mais

gcc -o rk main.c rk4.c rk8pd.c -lm 

serait probablement vous produire un programme exécutable tant que main() et func() ne sont pas répétées. Toujours lister les bibliothèques (-lxyz) après les fichiers source et/ou objet. Toujours!