C中主要方法的多个实例

时间:2015-03-30 10:07:38

标签: c linux makefile

我的作业存在问题,但我没有寻求帮助来完成作业,只是单一问题。

我的代码是这样的:

#include "linux/kernel.h"
#include "linux/unistd.h"
#include <linux/slab.h>

typedef _msg_t msg_t;

struct msg_t { /* members here */ };

static msg_t *bottom = NULL;
static msg_t *top = NULL;

int function_one (argA, argB) {
/* function is working, no need to show code*/
}

int function_two (argA, argB) {
/* function is working, so no need I guess to show the code*/
}

int main(int argc, char ** argv) {
char *in = "This is a testing message";
char msg[50];
int mlen;
function_one(in, strlen(in)+1);
mlen = function_two(msg, 50);
}

问题在于:当我从目录中执行make命令时,出现错误

/home/<username hidden by me>/dm510/linux-3.18.2/arch/um/os-linux/main.c:118: 
   multipli definition of 'main'
arch/um/kernel/built-in.o:
   /home/<username hidden again>/dm510/linux-3.18.2/arch/um/kernel/file_i_created.c:60 
   first defined here"

这个错误是什么意思?我只在我自己的文件中定义了一次main方法

2 个答案:

答案 0 :(得分:2)

消息说你有(至少)两个C文件,main.c和file_i_created.c包含在构建中。两者都有main()函数。 (在C中,术语是“function”,而不是“method”。)删除其中一个源文件,或删除/重命名其中一个的main()函数。

答案 1 :(得分:0)

您有多种方法:

  • 通常程序中只有一个主要部分。如果是,请确定,哪个是实际的主要内容并重命名另一个
  • 如果两个主电源都是必需的,您可以尝试将它们放在单独的命名空间中

虽然没有看到file_i_created.c代码,但真的无法告诉我们。也可能是别的东西。