I wait Caturday. I wait Catnarok.
Копаюсь в одной программе и набрел там на такое:
Больше упоминаний о функции fhf2f_ в программе нет. То есть декларация функции есть, а тела ее нет. При этом программа нормально линкуется. Однако если выдрать файл с этой функцией и вставить его в другую программу, gcc выдает ошибку.
Поясните, пожалуйста, что это за конструкция такая и почему не работает вне проекта.
Программу можно скачать здесь. Сам файл в архиве - это ./comphep-4.5.1/src/mssmlib/fhf3.c
double fhf2f_ (double *, double *, double *, double *, double *,
double *, double *, double *, double *, double *,
double *, double *, int *);
double
feynhiggs (double t, double tp)
{
if (res[1] == 0.0)
return fhf2 (tbsv, musv, Mq3sv, Mu3sv, Md3sv, Atsv, Absv, MG2sv, MG3sv,
MH3sv, Mtsv, Mbsv, tp);
return res[(int) floor (tp + 0.1)];
}
Больше упоминаний о функции fhf2f_ в программе нет. То есть декларация функции есть, а тела ее нет. При этом программа нормально линкуется. Однако если выдрать файл с этой функцией и вставить его в другую программу, gcc выдает ошибку.
Поясните, пожалуйста, что это за конструкция такая и почему не работает вне проекта.
Программу можно скачать здесь. Сам файл в архиве - это ./comphep-4.5.1/src/mssmlib/fhf3.c
Линкуется она тоже нормально. Исправил пост.
Скажите, вы линкуете исключительно собранный из исходников код? Или там есть сторонние библиотеки в уже бинарном виде? И где объявлено определение функции fhf2f_(): где-то в заголовочном файле или в коде какого-то модуля?
В заголовочном файле эта функция не объявляется. Она вообще встречается только в этом файле. Искал с помощью cat | grep. В .c файл включены только стандартные заголовки + header-файл, в котором только декларации функций.