我有一个即将推出的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_ */
答案 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调用的其他函数等)调用它们。