Одна функция под разными именами в makefile'е

Добрый день.Помогите с такой проблемой. Делаю студийный проект из makefile'а. Там есть такие:
tcpmainfunc$(OBJSUFFICS): proxy.h proxymain.c    $(CC) $(COUT)tcpmainfunc$(OBJSUFFICS) $(CFLAGS) $(DEFINEOPTION)MODULEMAINFUNC=tcpmainfunc proxymain.cudpmainfunc$(OBJSUFFICS): proxy.h proxymain.c    $(CC) $(COUT)udpmainfunc$(OBJSUFFICS) $(CFLAGS) $(DEFINEOPTION)MODULEMAINFUNC=udpmainfunc $(DEFINEOPTION)UDP proxymain.c
строчки. Т.е. один модуль собирается дважды, но одна из его функций в объектниках имеет разные имена.Можно, конечно из proxymain.c сделать proxymain_tcp.c и proxymain_udp.c но держать копию файла (и помнить что файл после правки нужно незабыть бы скопировать) как-то не хочется...Есть ли другой метод?С уважением...
5 ответов

Добрый день.Помогите с такой проблемой. Делаю студийный проект из makefile'а. Там есть такие:
tcpmainfunc$(OBJSUFFICS): proxy.h proxymain.c    $(CC) $(COUT)tcpmainfunc$(OBJSUFFICS) $(CFLAGS) $(DEFINEOPTION)MODULEMAINFUNC=tcpmainfunc proxymain.cudpmainfunc$(OBJSUFFICS): proxy.h proxymain.c    $(CC) $(COUT)udpmainfunc$(OBJSUFFICS) $(CFLAGS) $(DEFINEOPTION)MODULEMAINFUNC=udpmainfunc $(DEFINEOPTION)UDP proxymain.c
строчки. Т.е. один модуль собирается дважды, но одна из его функций в объектниках имеет разные имена.Можно, конечно из proxymain.c сделать proxymain_tcp.c и proxymain_udp.c но держать копию файла (и помнить что файл после правки нужно незабыть бы скопировать) как-то не хочется...Есть ли другой метод?С уважением...
Сделать 2 модуля, которые будут состоять из необходимых #define'ов (разных) и одного #include'а (одинакового) с файлом оригинального модуля. Оригинальный модуль при этом вообще исключается из компиляции.


так тело функции не заинклюдится вроде... или я чего-то не понял?есть функция:
int MODULEMAINFUNC (){    return 1;}
как ее в два разных модуля затянуть?


#include "file.cpp" тоже будет работать.а #define в рамках одного модуля (до инсклюда) решит проблему двойных имен.но по мне так проще изменить название этой функции и сделать два декоратора для нее.


я тут еще подумал -- по-идее смысл этого шаманства в том, чтобы для каждого "метода использования" иметь свои глобальные (для модуля) переменные. т.е. просто "затаскивание" функции нужного эффекта не даст...поэтому возникает вопрос -- можно ли как-то повлиять на компилятор? -- т.е. таки заставить его собирать один модуль два раза.или проще тупо сделать копию модуля и забыть о всем этом геморрое?


проще тупо сделать копию модуля и забыть о всем этом геморрое