一个代码中的多个小程序:: blocks项目

时间:2013-01-18 10:07:52

标签: c codeblocks

我是Code :: Blocks的新手。对于我的学习,我正在用C语言编写几个小程序(只是为了尝试一下)。 我试图将它们全部放在一个项目中,因为它们属于同一个主题,但这不起作用,因为每个项目都有一个主要功能。

任何想法如何将这些文件以某种方式放在一起,但不依赖于彼此?

6 个答案:

答案 0 :(得分:8)

假设您的源文件被调用

  • prog1.c的
  • prog2.c
  • mylib.c
  • mylib.h

其中prog1.c和prog2.c各包含一个main()函数,mylib.c(带有相应的头文件mylib.h)包含一些应链接到每个程序的库函数。在Code :: Blocks项目中,您需要立即创建多个目标。从菜单中选择'文件/新建/构建目标...'并命名他们' prog1'和' prog2'。现在将所有源文件添加到项目中(如果您还没有这样做)。

现在右键单击prog1.c并选择"属性..."从上下文菜单中。在对话框中选择' Build'选项卡并确保在"属于目标"只有" prog1"检查。对prog2.c和目标" prog2"执行相同的操作。对于" mylib.c"确保" prog1"和" prog2"检查。

现在,您可以轻松地在UI中选择要构建和运行的构建目标。请注意,如果您添加另一个目标,请说" prog3",那么您必须再次转到prog1.c和prog2.c的构建属性并取消选中" prog3"。

答案 1 :(得分:2)

C 程序应该只包含一个主要功能..将所有单独的程序划分为功能并将它们放在一个C程序中,或者甚至可以将它放入多个文件并编译它们。

您可以使用switch case来调用不同的函数..

从所有程序中删除main function并将其转换为functions ..

在需要的地方打电话给他们..这会对你有帮助..

答案 2 :(得分:1)

在我看来,好像你开始构建一些很好的实用功能。因此,请遵循raghu-srikanth-reddyce提供的建议,并为每个小程序创建单独的函数。但是我想补充一点,最好是创建一个简单的C库来保存它们随时可以链接的所有内容。大多数专业程序员都会保留这些库。

一个简单的makefile将使您能够构建一个可以链接到的最终二进制文件。

祝你的节目好运;)

答案 3 :(得分:1)

假设您的项目包含3个c文件,每个c文件是一个单独的程序,它包含自己的main函数:

  • program1.c
  • program2.c
  • program3.c

所以你可以写一个Makefile(你的计算机中的名字应该是“Makfile”)。它将构建您想要的程序

这是你的makefile的样子:

all: program1 program2 program3

%.o: %.c
    $(CC) $(CFLAGS) -c -o $@ $^

program1: program1.o
    $(CC) $(LDFLAGS) -o $@ $^

program2: program2.o
    $(CC) $(LDFLAGS) -o $@ $^

program3: program3.o
    $(CC) $(LDFLAGS) -o $@ $^

clean:
    rm -f *.o program1 program2 program3

使用上面的Makefile,您可以逐步构建每个程序

例如

$ make program1

只会构建program1

或者您可以使用

构建所有程序
$make all

答案 4 :(得分:0)

如果要在一个文件中编译,则不需要项目文件。 只需创建新文件,然后将所有代码写入单个文件中。如果需要,还可以使用功能程序

答案 5 :(得分:0)

这已经很晚了,但是因为我曾经在这里遇到同样的问题,并且我相信大多数学生曾经/曾经/都会有同样的问题,所以让我详细说明一下你在哪里玩的。

在教育课程和现实世界中,一个项目(通常)是您要处理的一些问题,找到解决方案,然后就此做一个报告(+文档)。

在Programming IDE中,项目本身就是问题的解决方案。因此,尽管您可能在任何Python IDE的一个项目中遇到多个单独的问题,但是任何标准C / C ++ IDE项目都必须只有一个'main()'来统治所有问题(除非您知道如何创建makefile)。

AP试图做的是将几个不同问题的解决方案放在一个解决方案的空间内-在Code :: Blocks中不可能这样做。即使所有问题都可能共享同一主题(例如图论),它们本身也是单个问题(Dijkstra与Floyd)。