Допустим, у меня есть проект, в котором есть библиотека, в которой у меня есть одна функция, которая возвращает одно значение, например:
unsigned long cFun1()
{
return 1000;
}
Затем у меня есть макет функции в главном. cpp, с тем же именем, и разница в том, что он возвращает какой-то другой результат, например:
unsigned long cFun1()
{
return 45;
}
Итак, в основном я вызываю простую функцию, подобную этой:
int main()
{
long retVal = cFun1();
return 0;
}
Когда я использую компоновщик как:
**link_command:**%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:\
ld -shared -z defs --exclude-libs ALL %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r}\
%{s} %{t} %{u*} %{x} %{z} %{Z} \
%{L*} %(link_libgcc) %o \
%{!nostdlib:%{!nodefaultlibs:%(link_ssp) %(link_gcc_c_sequence)}}
, вызывается функция, находящаяся в библиотеке, что мне не нужно. Что я хочу сделать, это вызвать mocked-функцию, которая находится в main.cpp. Для этого я добавляю следующие флаги: -fPIE -Wl, -pie
Компиляция приложения с этими флагами приводит к вызову фиктивной функции, которая находится в main.cpp и возвращает 45, но при этом появляются предупреждениякомпиляция: Переменная retVal объявлена, но не используется в текущей конфигурации.
Итак, вопрос в том, есть ли способ удалить эти предупреждения при использовании "-fPIE -Wl, -пирог "флаги? Или есть какой-то другой способ использования фиктивной функциональности, кроме использования упомянутых флагов?