【问题标题】:C code : Calling function in mainC代码:在main中调用函数
【发布时间】:2017-04-22 00:19:00
【问题描述】:

我有两个用 C 代码编写的程序,它们都有主函数(没有主函数我无法运行程序)现在我想创建一个主文件,比如 main.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 ****/

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

【问题讨论】:

  • 顺序是什么?您希望如何调用这些函数?
  • 2. SO 不能代替倾向于编程
  • @SouravGhosh : 序列并不重要。我创建这些是为了使用 GSL lib 求解二阶微分方程。
  • 您似乎在每个源文件中有一个名为 func() 的全局函数,还有一对函数名称 beginrk4beginrk8pd 映射到 main()。这是两个冲突——两个func() 和两个main()。您需要为每个 func() 赋予其自己的名称,并在各个文件中禁止 main() 函数。您最终会得到两个源文件,一个用于rk4,一个用于rk8pd,以及两个(或可能一个)用于声明函数的标头。然后在第三个源文件中编写一个main() 函数,该函数调用其他函数,包括用于声明函数的标头。
  • 是的;如果您有三个源文件:main.crk4.crk8pd.c,那么您有多种选择,但 gcc -o rk main.c rk4.c rk8pd.c -lm 可能会为您生成一个可运行的程序,只要 main()func() 不重复.并在源文件和/或目标文件之后列出库。总是!

标签: c unix gcc


【解决方案1】:

将 cmets 转换为答案。

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

您需要为每个func() 赋予其自己的名称,并在各个文件中禁止main() 函数。您最终会得到两个源文件,一个用于rk4(例如rk4.c),一个用于rk8pdrk8pd.c),以及两个标头(rk4.h 和 rk8pd.h) — or possibly one headerrk.h@987654335 @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)。总是!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 2019-04-25
    相关资源
    最近更新 更多