• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

funkcja INLINE

Object Storage Arubacloud
+1 głos
253 wizyt
pytanie zadane 30 stycznia 2019 w C i C++ przez Drax Użytkownik (630 p.)
Cześć. Chciałbym się spytać czy w przypadku funkcji INLINE jej definicja musi być znan przed miejscem w programie gdzie jest wywoływana?

2 odpowiedzi

+3 głosów
odpowiedź 30 stycznia 2019 przez mokrowski Mędrzec (155,460 p.)
Tak. Nie masz jednak gwarancji że zawsze będzie inline. To jedynie sugestia dla kompilatora.
0 głosów
odpowiedź 30 stycznia 2019 przez Patrycjerz Mędrzec (192,320 p.)
edycja 30 stycznia 2019 przez Patrycjerz

Nie, definicja może być po wywołaniu funkcji inline w kodzie. Takie drobnostki możesz zawsze sprawdzić w kompilatorze online, jak np. http://cpp.sh.

komentarz 30 stycznia 2019 przez Drax Użytkownik (630 p.)
Tylko w tym pytaniu chodziło mi o to, czy sama deklaracja wystarczy czy przed miejscem jej wywolania musi być już znana definicja.
1
komentarz 30 stycznia 2019 przez Patrycjerz Mędrzec (192,320 p.)
edycja 30 stycznia 2019 przez Patrycjerz

Przecież twoje pytanie jest dokładnie takie same jak wcześniej. Powtarzając, tak, definicja funkcji inline musi być znana przed jej wywołaniem.

komentarz 30 stycznia 2019 przez Patrycjerz Mędrzec (192,320 p.)
Przepraszam, coś mi się pomieszało. Tak jak w przypadku każdej funkcji, deklaracja funkcji inline musi być znana przed jej wywołaniem. Definicja może się znajdować później.
komentarz 30 stycznia 2019 przez Drax Użytkownik (630 p.)
W książce "Symfonia C++" w rozdziale na temat funkcji inline znalazłem taki zapis: "Do tej pory wielokrotnie podkreślaliśmy, że kompilator musi znac deklaracje funkcji w momencie gdy napotka pierwsze wywolanie tej funkcji. Po to, by sprawdzić poprawność wywołania. To tyle. Teraz jednak chodzi o sprawe poważniejszą. Jeśli fukcja jest typu inline to kompilator napotykajacy w jakiejs linii jej wywolanie tej funkcji musi w tej linii wstawić własciwe instrukcje. Zatem teraz juz sama deklaracja nie wystarczy. Definicja ciała funkcji musi już być w tym momemncie kompilatorowi znana."

Możesz się odnieść do tego fragmentu?
1
komentarz 30 stycznia 2019 przez criss Mędrzec (172,590 p.)
Definicja musi być w tej samej jednostce translacji tzn. upraszczając ma się znaleźć w tym samym pliku ale nie koniecznie przed (w rozumieniu tekstowym) wywołaniem.
komentarz 30 stycznia 2019 przez Patrycjerz Mędrzec (192,320 p.)

Ja jeszcze dodam uzasadnienie słów Crissa.

The definition of an inline function or variable (since C++17) must be present in the translation unit where it is accessed (not necessarily before the point of access).

https://en.cppreference.com/w/cpp/language/inline 

Podobne pytania

+1 głos
2 odpowiedzi 161 wizyt
pytanie zadane 24 września 2018 w C i C++ przez Huberti Gaduła (4,500 p.)
+1 głos
1 odpowiedź 305 wizyt
pytanie zadane 15 czerwca 2021 w Assembler przez pawel_000 Początkujący (450 p.)
0 głosów
2 odpowiedzi 127 wizyt
pytanie zadane 16 maja 2023 w HTML i CSS przez niezalogowany

92,615 zapytań

141,465 odpowiedzi

319,782 komentarzy

61,997 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...