Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

[Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.

#1
[Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.
Jak wiadomo inline jest sugestią dla kompilatora, żeby rozwijał tą funkcję w miejscu wywołania. Mi jednak zależy żeby mieć pewność, że kompilator rozwinie funkcję. Wiem, że mogę użyć makr, ale użeranie się z nimi nie uśmiecha mi się. Czy można jakoś wymusić rozwijanie w Visual C++ i Code::Blocks?
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#2
RE: [Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.
Wytłumacz mi jedno, po co Ci to ? Przecież kompilator jest raczej nieomylny, jak zadeklarujesz funkcję jako inline to chyba nie ma wątpliwości, że kompilator ja tak potraktuje...
Chyba nie jest sugestią tylko poleceniem, a to dwie różne rzeczy...
 System operacyjny: windows_vista Przeglądarka: firefox
#3
RE: [Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.
Powołuję się na książkę "C++ dla programistów gier" w, której napisano:
Cytat:[...]
nie ma żadnej gwarancji, że kompilator faktycznie zrezygnuje z realizacji wywołania na rzecz rozwinięcia kodu ciała funkcji. Słowo inline to dla kompilatora jedynie niewiążąca wskazówka.
[...]
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#4
RE: [Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.
Z tego co mi wiadomo to w przypadku prostych funkcji jest prawie 100% pewność, a funkcji złożonych raczej nie opłaca się deklarować jako inline.

BTW: Jeśli naprawdę chcesz iść pod prąd to wydaje mi się, że makra będą obowiązkowe ew. pogrzeb w ustawieniach kompilatora. Można wiedzieć, czemu Ci tak na tym zależy ?
 System operacyjny: windows_vista Przeglądarka: firefox
#5
RE: [Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.
(14.12.2008, 21:47)kubasnk napisał(a): Z tego co mi wiadomo to w przypadku prostych funkcji jest prawie 100% pewność, a funkcji złożonych raczej nie opłaca się deklarować jako inline.

BTW: Jeśli naprawdę chcesz iść pod prąd to wydaje mi się, że makra będą obowiązkowe ew. pogrzeb w ustawieniach kompilatora. Można wiedzieć, czemu Ci tak na tym zależy ?

Prawie - i tu jest pies pogrzebany bo ja chcę mieć pewność, lubię mieć nad wszystkim kontrolę. Ustawienia kompilatora przejrzałem kilkukrotnie, ale nic takiego nie znalazłem, więc się pytam bo może ktoś takie coś znalazł.
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#6
RE: [Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.
W mojej książce "Visual C++ 2005 Od podstaw" jest napisane: "Kompilator niekiedy może sobie nie poradzić z przeprowadzaniem operacji rozwijania kodu (np. w przypadkach funkcji rekurencyjnych, dla których pozyskaliśmy adres), ale z reguły nie ma żadnych problemów. Technikę tę najlepiej stosować z krótkimi, prostymi funkcjami [...] Wstawianie kodu rozbudowanych funkcji znacznie wpływa na rozmiar modułu wykonywalnego"

Z tego co pamiętam w Symfonii też nie jest to szczegółowo opisane.
 System operacyjny: windows_vista Przeglądarka: firefox
#7
RE: [Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.
przecież tego nie sprawdzisz.......:D nie przejmuj się takimi drobiazgami.. ja takie funkcję stosuję gdzie nie mam więcej niż 5 średników w ciele funkcji
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
#8
RE: [Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.
Znalazłem rozwiązanie, może komuś się przyda. Działa tylko w Visualu
Cytat:_forceinline int Kwadrat(int x)
{
return x*x;
}
 System operacyjny: windows_xp_2003 Przeglądarka: firefox
Programy: Polecane / Nowe / Inne




Podobne wątki ([Visual C++ 2008 EE Code::Blocks 8.02] Wymuszanie rozwijania funkcji inline.)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Visual Studio Code- zmiana folderu rozszerzeń Physicist 4 17410 05.04.2020, 15:46
Ostatni post: Physicist
  Transfer plików via FTP Visual Basic FireBytes 3 8230 15.08.2019, 07:41
Ostatni post: Szachista
  Visual Basic Excel l.całkowitą przedstawić w postaci szesnastkowej fugaz 4 18473 18.06.2019, 21:36
Ostatni post: fugaz

Skocz do: