Почему мой .exe из файла Makefile не печатается из моего второго файла? - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть предстоящий проект на C, где мне придется использовать make-файлы, поэтому я сделал быстрый пример, чтобы почувствовать себя комфортно, но столкнулся с ошибкой.

Я сделал один файл, который просто печатает «привет», а другой - «мир». Кто-нибудь сможет объяснить это?

Я запускаю .exe, и он печатает только "привет". Мой make-файл собирается без каких-либо ошибок, я искал и не видел подобных вопросов, поэтому любые отзывы будут оценены.

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 ]

2 голосов
/ 29 февраля 2012

Все, что у меня есть в 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 голос
/ 29 февраля 2012

Вы определяете test_main (), но никогда не вызываете его. Попробуйте добавить его в main () примерно так:

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

Важно понять, что имя функции main() - это " magic " в C, это функция only , которая вызывается при запуске вашей программы. Если вы хотите, чтобы вызывались любые другие функции, вам нужно вызывать их из main() (или из других функций, которые сами вызываются main и т. Д.)

...