Czy mógłby ktoś wyjaśnić łopatologicznie o co chodzi z tym inline ?
A może dobrze zrozumiałem, że jeśli zrobi się funkcję z tym... "przedrostkiem" (?) ... to kiedy zostanie wywołana w funkcji main() zostanie skopiowana do niej i wystartuje, a nie inicjowana w miejscu utworzenia (czyli gdzieś wcześniej/później/w innym pliku)?

#naukaprogramowania #programowanie #it #programista15k #cpp
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@farmaceut: na wikipedii jest przecież to jasno opisane - tak, ma to na celu uniknięcie kosztownych instrukcji skoków. warto pamiętać, że modyfikator inline może zostać zignorowany przez kompilator, a jednocześnie funkcja może zostać zinlinowana mimo braku tego modyfikatora
  • Odpowiedz
Gubię się w kwestii referencji prawostronnych i std::move. Kiedy funkcja może zwracać referencję prawostronną i ma to sens? I jakie obiekty mogą ją przechowywać?
https://ideone.com/DENrPW
http://cpp.sh/27tyd
Mam taki kod, który na każdym kompilatorze działa inaczej. Połowa to undefined behaviour. I teraz na przykład dlaczego przy wywołaniu z 32 linii obiekt rr&& wg gcc 6.3 na ideone nie złapie wartości z return jeśli użyję std::move, ale już bez move zadziała normalnie? Na visualu
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Kiedy funkcja może zwracać referencję prawostronną i ma to sens? I jakie obiekty mogą ją przechowywać?


@Atraktor: Poza pisaniem własnego std::move nie powinieneś zwracac rvalue ref. Rvalue działa jak lvalue rev, z tą różnicą, że bindują się do niej temporary values oraz ma inny typ, więc wywołanie funkcji/konstruktora woła inne overloady. Technicznie zwrócenie rvalue ref ma ten sam sens, co zwracanie lvalue ref. Niestety fakt bindowania temporary values do rvalue
  • Odpowiedz
@Atraktor: @robko: ten kod to jest poprostu jedno wielkie UB.

@Saly: jedyną różnicę jaką widzę to zachęta do przeniesienia obiektu do lokalnej zmiennej, żeby domyslnie sie wykonał konstruktor przenoszenia, ale nie w przypadku kiedy uzywasz tylko samej referencjii.
  • Odpowiedz
@bielu000: problem jeszcze może być w tym, że psh.name nie jest inicjalizowane w całości - inicjalizujesz tylko pierwsze 5 bajtów - w pozostałych 20 są śmieci.
Spróbuj zrobić coś takiego w mainie:
struct pseudo_header psh = { 0 };
I tak musisz mieć unsigned char w csum - inaczej wyjeźdźasz poza header w pętli.
  • Odpowiedz
@bielu000: ten przykład ze strony binarytides.com działa ponieważ oni w pętli od licznika odejmują 2: nbytes-=2;
U Ciebie też to mogłoby zadziałać jakbyś miał:
for(int i = 0; i < sizeof(struct pseudo_header)/sizeof(*ptr); i++).
Ale od początku.
sizeof(struct pseudo_header) zwraca Ci rozmiar struktury w bajtach (w Twoim przypadku jest to 36). Ale ponieważ ptr to jest wskaźnik na unsigned short, to w pętli "skakałeś" co dwa bajty (taki ma rozmiar unsigned short jeśli masz
  • Odpowiedz
@James0n: zaprzyjaznienia nalezy uzywac jak najrzadziej. To raczej mozliwosc w razie czego (czyli jesli zajdzie rzeczywista potrzeba, a nie mozna za bardzo wiecej nic zrobic) i jesli juz trzeba, to raczej jako funkcja widoczna prywatnie tylko w jednym module, tak by ewentualne problemy zminimalizowac. Chodzi o to, by dane hermetyzowac jak najbardziej dane, aby nie bylo przypadkowych wartosci, szczegolnie, jak okaze sie, ze dane winny byc zalezne w jakis sposob
  • Odpowiedz
Ktoś wyjaśni czemu poniższy kod wyświetla tylko funkcję myGradeBook.displayMessage(), a dopiero po nacisnieciu jakiegokolwiek klawisza wlacza sie myGradeBook.determineClassAverage()?
Co najlepsze ostatnia zapętla się w nieskonczonosc, do momentu kiedy kompilator wywala błąd i hamuje procedurę...

Poniżej kody:

source.h - https://pastebin.com/W7yxzWAd
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Pewnie noob question, ale nie mogę znaleźć odpowiedzi.
Mam taki kawałek kodu:

while(name[i] != '\0')
m_name[i] = name[i++];
Chciałem zrobić inkrementację w ten sposób (i to int zainicjalizowany przed pętlą zerem), ale wpisuje mi w m name jakieś śmieci oprócz prawidłowych danych. Czego tu nie rozumiem?
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@nienawidzejanka: Tak się nie powinno pisać. Mieszanie inkrementacji w jednej linijce z odczytem jest proszeniem się o problemy. W Twoim przykładzie prawdopodobnie odczytuje name[0], ale wpisuje to już do m_name[1], bo w międzyczasie zinkrementowało i.
Lepiej napisz:

while (name[i] !=
  • Odpowiedz
7 dzień promocji w księgarni #helion to wybrane #ksiazki dotyczące języka #cpp możemy kupić dziś 30% taniej w postaci druku i 50% taniej w postaci #ebook

Dla tych co zdecydowali się na #naukaprogramowania tego języka (język trudny i nie dla każdego początkującego polecany), to jest w promocji tez książka Stroustrupa. Jest też książka Grębosza (o której pisałem kilka komentarzy, bo spodziewałem
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Cooltec: Jak dla mnie Stroustrupa. Grebosz jest spoko dla tych co costam juz umieja, nie maja czasyu na siedzienie przed klawiatura, a chca sie pouczyc. W sumie tak na poczatku lat 90 mialem, dlatego mi pasowala. Pierwszy tom przeczytalem ze zrozumieniem nie siadajac do klawiatury (nie moglem wtedy :) Jak ju usiadlem okazalo sie, ze wiekszosc rzeczy dobrze zrozumialem.

Natomiast in minus, to fakt, ze nowe rzeczy sa w tej
  • Odpowiedz
Kilka lat temu popełniłem na Wykopie AMA, które wbrew moim oczekiwaniom stało się dość popularne. Do tej pory zgłaszają się do mnie ludzie z pytaniami, na które staram się odpowiadać, jak tylko mogę.
Najczęściej powtarza się prośba o listę blogów, książek i innych źródeł, które mogą pomóc w zdobyciu wiedzy niezbędnej do pracy przy HFT/low latency.
W związku z tym postanowiłem przygotować listę linków pomocnych dla aspirujących programistów.
Kolejność na tej
  • 40
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mam taką rozkminę: czy developerzy gier albo innych wymagających programów, którzy dostarczają programy przez internet np. przez steama tworzą dedykowane kompilacje pod konkretne architektury procesorów (odpowiednik -march=cpu-type z GCC)?
#cpp
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

  • 2
Drogie mirki z #warszawa, #lodz i okolice nie chcielibyście zatrudnić może mireczka, który chciałby into #programowanie (chodzi głównie o doświadczenie, mogłoby to nawet być coś w rodzaju bezpłatnego stażu)? Za tydzień będę mieć 20 lat. Znam składnię #cpp, #java, obiektówkę. Pisałem troszkę w JavaFX, próbowałem swoich sił w springu. Od biedy również napiszę coś w #php (prosty
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Co mogę zrobić w przypadku, gdy mam buffer w postaci wskaźnika na pamięć, a encoder żąda sobie zwykłej tablicy short int?
Głównym celem jest zapięcie encodera lame do obecnego buffera. Czy w tym przypadku zostaje mi tylko rozwiązanie pointers -> array -> encoder -> pointers? https://pastebin.com/LE3vRJ5N

#cpp #programowanie
  • 2
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Jaka może być przyczyna tego, że porównując input ze zmienną, której wartość otrzymałem z getline otrzymuję wartość 0, pomimo że wypisując cout'em widzę, że są one takie same (w obu przypadkach jest to literka "c")
#programowanie #cpp
  • 16
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Hejka Mirki i Mirabelki z #programowanie #cpp #symulatory #simulation

Ostatnie ~pół roku w wolnych chwilach rozwijałem sobie symulator logiki razem z jej edytorem i doszedłem do w miare stabilnej wersji, że nawet w pracbaza znalazł sobie zastosowanie.
Głownie c++17/modern cmake/qt5(edytor), jeśli kogoś zainteresuje to polecam sprawdzenie, ogólnie proszę o krytykę/nowe pomysły/jakikolwiek feedback :D

Showcase gifowy i lista ficzerów na githubie
harakash - Hejka Mirki i Mirabelki z #programowanie #cpp #symulatory #simulation

O...

źródło: comment_an74WIFiyFppGvbAFxkod94uPGFoSMP2.gif

Pobierz
  • 7
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@harakash: Ło panie kawał dobrej roboty.

Rozumiem że int i float to tylko takie dodatki bo nie wiadomo ile mają bitów ani w jakim formacie są, ale brakuje kilku rzeczy. Do takich niezbędnych to konwertowanie binarnych wejść na inta (ilu bitowego?) oraz zamiana binarna inta na floata (tak jak reinterpret_cast) albo osobno mantysa i wykładnik.

Z takich trudniejszych do implementacji rzeczy to na pewno blok pamięci by się przydał (zarówno 1
  • Odpowiedz
@folxuxd nie to że go nie lubię ale po prostu się sprzedał, zamiast mówić konkretnie o programowaniu i rzeczywistości wkręca jakieś coachowe gadki i wydaje dziwne książki nie wiadomo dla kogo. Zwęszył kasę na ludziach którzy chcą zmieniać branżę i ciągle powtarza to samo.
  • Odpowiedz