为什么不是我的第二个文件中的Makefile打印我的.exe?

时间:2012-02-29 07:40:28

标签: c build makefile printf exe

我有一个即将推出的C项目,我将不得不使用makefile,所以我做了一个快速的例子让自己感到舒服,但遇到了一个错误。

我制作了一个只打印“hello”的文件和另一个打印“world”的文件。有人能解释一下吗?

我运行.exe,它只打印“你好”。我的makefile完美构建没有任何错误,我一直在搜索并没有看到任何类似的问题,所以任何输入将不胜感激。

makefile:

mymalloc_test: mymalloc.o mymalloc_driver.o
    gcc -o mymalloc_test mymalloc.o mymalloc_driver.o   

mymalloc.o: mymalloc.c mymalloc.h
    gcc -c mymalloc.c

mymalloc_driver.o: mymalloc.h mymalloc_driver.c
    gcc -c mymalloc_driver.c

我在mymalloc和mymalloc_driver中的所有内容都是2个打印语句。 好的,这是我猜的来源

mymalloc.c

#include "mymalloc.h"
#include <stdio.h>

int main()
{
printf("hello");

return 0;
}

mymalloc_driver.c

#include <stdio.h>
#include "mymalloc.h"

int test_main()
{
printf("world\n");

return 0;
}

和空标题

#ifndef MYMALLOC_H_
#define MYMALLOC_H_

#endif /* MYMALLOC_H_ */

2 个答案:

答案 0 :(得分:2)

  

我在mymalloc和mymalloc_driver中的所有内容都是2个打印语句。   它没有这种方式。

Makefile只允许您将代码模块化到不同的文件中,它不会做任何事情,代码语句的调用顺序就是您在main()函数中组织它们的方式。

您的代码应按如下方式组织:
mymalloc.c

#include <stdio.h>
#include "mymalloc.h"
#include "mymalloc_driver"

int main()  //The program execution starts here and continues further as statements are organized
{

    printf("\Hello");
    doSomething();
    return 0;
}

<强> mymalloc_driver.c

 #include<stdio.h> 
 #include "mymalloc_driver.h"

 void doSomething()
 {
    printf("World");
 }

mymalloc_driver.h

#ifndef MYMALLOC_DRIVER_H
#define MYMALLOC_DRIVER_H

void doSomething();

#endif

mymalloc.h

#ifndef MYMALLOC_H
#define MYMALLOC_H

//some declarations 

#endif

答案 1 :(得分:1)

您定义了test_main()但从不调用它。尝试将其添加到main(),如下所示:

int main()
{
printf("Hello ");
test_main();
return 0;
}

要掌握的一个重要思想是C中的函数名main()为“ magic ”,它是程序时调用的 only 函数运行。如果你想要调用任何其他函数,你需要从main()(或者从main调用的其他函数等)调用它们。