I wait Caturday. I wait Catnarok.
Копаюсь в одной программе и набрел там на такое:

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

@темы: *nix

Комментарии
11.04.2011 в 21:22

Life is a life... We are the humans...
хз как в линуксе, но если попробовать скомпилить в винде, то всё компилится, а линкер выдаёт Unresolved external, то есть всё нормально))))
11.04.2011 в 21:25

I wait Caturday. I wait Catnarok.
MrXaK
Линкуется она тоже нормально. Исправил пост.
12.04.2011 в 00:45

Пау-чок
ДихлофосЪ
Скажите, вы линкуете исключительно собранный из исходников код? Или там есть сторонние библиотеки в уже бинарном виде? И где объявлено определение функции fhf2f_(): где-то в заголовочном файле или в коде какого-то модуля?
12.04.2011 в 01:43

I wait Caturday. I wait Catnarok.
O
В заголовочном файле эта функция не объявляется. Она вообще встречается только в этом файле. Искал с помощью cat | grep. В .c файл включены только стандартные заголовки + header-файл, в котором только декларации функций.