inline a wartosc zwracana przez funkcje

Odpowiedz Nowy wątek
Molibdenowy Mateusz
2008-01-11 13:47
Molibdenowy Mateusz
0

Czemu funkcji inline nie musi zwracac wartosci tzn.

inline int ff()
{
}

ten kod jest poprawny, podczas gdy funkcja 'zwykla' MUSI zawierac 'return costam'.

ten kod nie skompiluje sie w VC++2003

int ff()
{
}

Jest w tym jakis glebszy sens czy moze jest to blad kompilatora?

Pozostało 580 znaków

2008-01-11 15:18

Rejestracja: 12 lat temu

Ostatnio: 12 lat temu

0

Z tego co pamiętam fukcja inline działa tak, że w każdym miejscu jej wystąpienia zastępowana jest ona swoim kodem a zatem po prostu w miesjce wywołania funkcji wstawiony jest blok instrukcji.

Poza tym pomicięcie instrukcji return to jeden z perków funkcji inline - są dzięki temu szybsze...

Pozdrawiam,

Pozostało 580 znaków

2008-01-11 20:21

Rejestracja: 13 lat temu

Ostatnio: 12 lat temu

0

w zasadzie modyfikator 'inline' nie oznacza do końca, że dana funkcja zostanie wklejona w miejscu jej wywołania, lecz sugeruje kompilatorowi uczynienie czegoś takiego (nie ma żadnych gwarancji że tak się stanie) - może w Microsoftowym kompilatorze jest inaczej - trzeba by się w dokumentacji zagłębić.

Pozostało 580 znaków

2008-01-12 17:04

Rejestracja: 13 lat temu

Ostatnio: 1 rok temu

0

stara nalecialosc w jezyku: jesli pominiesz return, to zwracane jest blizej nie wiadomo co (doslownie: aktualna wartosc z rejestru EAX, a co w nim ostatnio bylo? nikt nie wie:) ). generalnie jest to blad i MSVC dobrze robi zglaszajac blad. G++ rowniez zwraca, ale warning:

-sh-3.00# cat x.cpp
#include <iostream>

inline int ff()
{}

int main()
{ ff();
}
-sh-3.00# g++ -Wall -ansi --pedantic x.cpp
x.cpp: In function `int ff()':
x.cpp:4: warning: no return statement in function returning non-void
x.cpp:4: warning: control reaches end of non-void function


no to pojechałem z nieobecnością.. chwila przerwy i prawie rok przeleciał

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0