2016-12-07 24 views
-3

调用函数我有我已经写在C代码两者都主要功能(我是不是能够运行无主功能的程序),现在我想建立一个单一的主文件说,两个方案main.c从哪里可以调用这两个函数。我怎样才能做到这一点 ?请建议..我对c编程比较陌生。C代码:主

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 ****/ 

如何创建一个主函数调用这两个?

+0

什么是序列?你想如何调用这些函数? –

+0

2. SO未取代靠在编程 –

+0

@SouravGhosh:序列并不重要。我已经创建这些使用GSL LIB解决二阶微分方程。 – ausworli

回答

0

转换注释到答案。

你似乎有一个名为func()在每一个源文件的全局函数,也是对函数名beginrk4beginrk8pd您映射到main()的。这是两个冲突 - 两个func()和两个main()

您需要为每个func()指定自己的名称,并在各个文件中禁止main()函数。你结束了两个源文件,一个为rk4(如rk4.c),一个用于rk8pdrk8pd.c),和两个头(rk4.h和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`)调用其他函数,并包含声明函数的头文件。

仍然得到错误main.c:(.text+0xa): undefined reference to `beginrk4'

我需要通过GCC给出具体的文件名?

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

是的;如果你有三个源文件:main.crk4.crk8pd.c,那么你有多种选择,但

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

大概只要main()func()不重复产生你执行的程序。始终在源文件和/或目标文件之后列出库(-lxyz)。总是!