LINUX.ORG.RU

C99 inline-функции


0

0

Всем привет!
У меня не компилятся проги, в которых идёт вызов inline-функций, даже самых простых, вываливается с ошибкой:

/tmp/ccA4aR4H.o: In function `main':
kal.c:(.text+0xf): undefined reference to `max'
collect2: выполнение ld завершилось с кодом возврата 1

может ключик какой прописать надо? Ман читал честно - не нашёл

inline-функция в том же объектнике должна быть, т.е. ее определение либо в заголовочном файле надо размещать, либо определять и использовать в том же исходном файле.

anonymous ()
Ответ на: комментарий от PamidoR
int max(int a, int b);

inline int max (int a, b) 
  { return a > b ? a : b; } 
 
int main () 
  { max (4, 5); }

А так? :)

anonymous ()
Ответ на: комментарий от Love5an

Цитаты кода, и ссылка на «delphi порнуха бесплатно скачать»...

Объясни хоть, что имел ввиду?

e3d08dff ()
Ответ на: комментарий от PamidoR

Как тебе правильно подсказал анонимус, точку с запятой в конце выражения в своей inline функции ты тоже пропустил.

m0rph ★★★★★ ()
Ответ на: комментарий от Love5an

у меня возникли сомнения в когнитивных способностях некоторых анонимусов, поэтому поясню суть:

Отношение к точке с запятой как к разделителю операторов(и, соответственно, как к необязательной вещи если оператор один), а не как к обязательному аттрибуту каждого оператора выдает мозг, необратимо покалеченный немаленьким опытом писания на печально известном поделии, являющемся ответвлением далеко не самого удачного из придуманных виртом языков программирования.

А запись параметров функций в приведенном автором виде так и вовсе подтверждает диагноз.

Соответственно, говорить что-либо о декларациях инлайн-функций автору смысла не имеет. Имеет смысл только как максимум поглумиться и отослать к известной копипасте(lurkmore://ильхам), если не мешает внезапно нахлынувший приступ альтруизма.

Love5an ()

Да, не компилируется, если собирать с «std=c99».

e3d08dff ()
Ответ на: комментарий от m0rph

щет, как я так скопировать то умудрился? 0_о. короче не в этом дело, с лексемами всё нормально. Напишите как правильно компилировать чтоли?

PamidoR ()
Ответ на: комментарий от PamidoR

Ну в самом простом случае можно обойтись даже вот этим:
gcc <source.c> -o <binary>

Сложностей-то не должно возникать.

m0rph ★★★★★ ()
Ответ на: комментарий от PamidoR

При том что я туплю :)
Непроизвольная реакция на мат. функции и undefined reference.

Svoloch ★★★ ()

kal.c

название файла не в бровь....

inline int max (int a, b)

{ return a > b ? a : b }

int main ()

{ max (4, 5); }

Почитал, подумал чем помочь автору.... Слух, может тебе ненажо кодить?! Ну пипетс же...

erfea ★★★★★ ()
Ответ на: комментарий от erfea

Надо, Вася, надо. Кодил то я до этого на плюсах, там такой фигни не было с инлайном. А про int и точку с запятой ступил просто)

PamidoR ()
Ответ на: комментарий от Zodd

осторожей с макросами, а то ведь и без ноги остаться можно

beastie ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.