выбор main () для использования в Makefile - PullRequest
2 голосов
/ 23 марта 2010

В проекте C у меня есть функция main () в нескольких файлах.При компиляции у меня появляется ошибка «несколько объявлений main».Можно ли выбрать в Makefile, какую из этих функций main () следует использовать для компиляции?(другие будут игнорироваться ...)

Ответы [ 3 ]

4 голосов
/ 23 марта 2010

Вы можете скрыть их, используя препроцессор:

В file1.c:

#if defined FILE1_MAIN
int main(void)
{
  printf("Running main() in file1.c");
  return 0;
}
#endif

При необходимости это можно повторить в любом количестве файлов C.

Затем в Makefile есть логика, которая передает правильную опцию -D компилятору, то есть -DFILE1_MAIN для включения main() из file1, -DFILE2_MAIN для получения file2.c и т.Техника также может быть полезна при реализации, например, библиотечных модулей, для включения необязательного main() для тестирования в одном файле C.

1 голос
/ 23 марта 2010

Вы можете просто написать цель для каждого main(), где вы игнорируете все файлы, кроме одного, который содержит main().

0 голосов
/ 23 марта 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...