使用多个主要入口点开发C.

时间:2014-10-19 12:04:18

标签: c entry-point

我曾经用Eclipse开发Java项目。 Java项目可以包含许多带有main函数(入口点)的代码文件,因此我们可以运行具有main函数的每个代码文件。

但现在我想通过Eclipse CDT开发C项目。 在C项目中,我们只能有一个main函数。我可以拥有许多带有main函数的代码文件,并像在Java中一样运行每个文件吗?

P.S。:我不想为自己的每个文件写 Make Target

2 个答案:

答案 0 :(得分:1)

Javas选项在每个对象中都有一个主要部分是非常恼人的,对我来说没有意义。

我假设您想要训练一下c并希望找到一种方法将所有训练课程放在一个文件中。这是一个选择,可以粗略地为您做到这一点。这不适合作为应用程序,但您可以使用它来执行不同的选项。

要使用此功能,您可以将您的程序称为'progname 1'。

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

int ProgrammingLesson001(void);


int main(int argc, char * argv[])
{
    int i;
    int option;
    int e = 0;

    printf("%i\n", argc);

    for(i = 0; i < argc; ++i)
    {
        printf("%s\n", argv[i]);
    }

    if(2 == argc)
    {
        option = atoi(argv[1]);
        printf("Your Option was '%s' interpreted as %i\n", argv[1], option);
    }
    else
    {
        option = 0;
        e |= 1;
    }

    switch(option)
    {
    case 0:
        printf("zero is an error\n");
        e |= 1;
        break;
    case 1:
        e |= ProgrammingLesson001();
        break;
    default:
        break;
    }

    if(0 != e)
    {
        printf("an error has occureed\n");
    }

    return e;
}

int ProgrammingLesson001(void)
{
    printf("This could behave like a main for training purposes\n");
}

如果您花了一些时间在c中编程,请再看一下makefile。 您可以创建适合所有程序的makefile。 这减少了您需要投入的实际工作,以至于维护交换机构造比创建新项目更困难。

答案 1 :(得分:0)

感谢Clifford修复我的任务和回复

的人

我自己解决了这个问题 这是我的解决方案:

  #!/bin/bash
    SourceFile=$1
    Path="$(dirname "$SourceFile")"
    ParentPath="$(dirname "$Path")"
    OutputPath="$ParentPath/bin"
    OutputFile="$OutputPath/a.out"
    mkdir -p $OutputPath
    rm -f $OutputFile
    gcc -w $SourceFile -lm -o $OutputFile 
    $OutputFile

这个bash的名字是gcc.sh

在eclipse中运行 - &gt;外部工具 - &gt;外部工具配置 - &gt;新配置

Location: /home/xxxxx/gcc.sh
Working Directory: (just let it be empty)
arguments: ${resource_loc}

然后您可以通过自定义命令

运行C文件