@Onoki: Wyszło mi przed chwilą, że jak dasz flagę -g (dodaje info o debugowaniu), to jak ld nie będzie mógł znaleźć jakiejś funkcji to uprzejmie pokaże też w której lini kodu źródłowego jest odniesienie do szukanej nazwy (a nie tylko przesunięcie w sekcji .text binarki)
#programowanie #cpp

Mireczki mam pewien problem, dylemat. Powiedzcie mi: kiedy przy deklaracji zmiennej/obiektu rzucać go na stos a kiedy na stertę? W zasadzie nie widzę wiekszych różnic. Gdzieś, kiedyś, jakoś, ktoś napisał "ee, lepiej umieść cośtam na stercie bo jeszcze na stosie Ci się nadpisze albo straci zasięg i będzie" - jak skoro stos nie może się nadpisać? Poza tym nawet jeżeli zadeklarujemy coś w funkcji na stercie to po wyjściu z
#cpp

#programowanie

Siema mirki, jest mi w stanie polecić ktoś dobrą książkę do nauki cpp? na zajęciach (policealna ti) skończyliśmy omawiać cpp na tablicach wielowymiarowych, w ramach, że mam teraz trochę wolnego chciałem samemu "pójść dalej". Słyszałem, że Thinking in c++ jest dobrą książką pytanie brzmi czy nie będzie dla mnie zbyt zaawansowana na obecny poziom wiedzy ;)
@bartoneczek: Kaƶdy wątek ma własny stos. Rozpoczęcie innego wątku nie wpływa na twórcę i twórca kontynuuje dalej. W takim wypadku miałeś rzucony wyjątek bez ƶadnego catcha, więc zostało zawołane

std::terminate
Programiści. Powiedzcie mi. Co mogę dodać do zwykłego programu BlackJack w kości?

Taką oto wiadomość dostałem:

Aby program spełniał kryteria projektu zaliczeniowego niezbędne jest dodanie funkcjonalności związanej z analizą i ustalaniem strategii gracza oraz komputera. Przede wszystkim strategie powinny być konfigurowalne. Niedopuszczalne jest rozwiązanie, w którym decyzje są częścią kodu źródłowego. Ponadto dla każdej z dostępnych strategii powinny być prowadzone statystyki, które pozwalałyby komputerowi dostosowywać się do wyborów gracza na podstawie historii
@vokus: (#) Niee. Poczekam, co on mi napisze. Zaproponowałem, iż napiszę ten program jako gra w karty, bo już nie wiem, co mogę zrobić jeszcze. Naprawdę. Nie wiem, jak mogę zmienić ten program tak, by zawierał on jakieś zmiany w algorytmie w trakcie grania.... No idea..
@GrabkaMan: co "niee" :D ? co do zmian no to właśnie piszę co możesz zrobić. No ale jak wiesz lepiej, albo zapytasz się gościa to po co pytasz na mirko :D ? Jak dla mnie to koleś napisał dość jasno co masz zrobić. gracz sam ustala strategie przy każdym ruchu, komputer na podstawie historycznych danych określa czy lepiej jest wybrać ruch T lub N ( przykładowo TTN miało 60 % wygranych
Kiedy w C++11 zamiast jawnego podania typu używamy auto, to jest on ustalany w czasie kompilacji, czy w czasie wykonania?

Zaznaczam, że chodzi mi o pewne odpowiedzi, a nie "mi się wydaje". :)

#programowanie #cpp #cpp11

A tak w ogóle, wiecie że tag prokuratorboners ma więcej obserwujących niż programowanie? Zawsze byłem przekonany, że to programowanie jest świętym tagiem mirko i ma najwięcej atencji. :>
tak mnie naszło:

Mam taki fragment kodu, zmienne a i b lepiej deklarować wewnątrz pętli czy na zewnątrz? Z jednej strony potrzebne mi są tylko w tej pętli, ale z drugiej, jak by były wewnątrz, to chyba za każdym razem byłby od nowa tworzone i usuwane w pamięci, czy może się mylę? Jak lepiej?

int a, b;

for(int i=0; i
{

scanf("%d %d", &a, &b);

graf[a].push_back(b);

}

#programowanie #cpp
Potrzebuje porady od tych co #programujo. Otóż znam podstawy programowania obiektowego w c++ (klasy, dziedziczenie, polimorfizm) i poznałem dosłownie podstawy javy (czyli czym się różni od c++, kilka prostych programów, bardzo prostych). No i chcę kontynuować naukę samodzielnie, rozwijać się w tym kierunku. I teraz pytanie jak najlepiej to zrobić? Jaka literatura, ewentualnie kursy, żeby jak najskuteczniej się rozwinąć w aspekcie programowania (czyli czy równolegle c++ z javą, czy tylko jeden
#programowanie #kdevelop #gdb #cpp

Miał ktoś z Was problem z debugowaniem w KDevelop? Wszystko IMO ustawione jest poprawnie, odpalam tryb debugowania i nie zatrzymuje mi się na breakpointach. GDB uruchomiłem z palca w konsoli i śmiga aż miło, więc to nie kwestia GDB. Kompiluję za pmocą CMake który domyślnie kompiluje do Debug więc w makefile nawet nie zaglądałem bo chyba nie ma sensu...
Mirki szukalem w necie jak sprawdzic stan interefejsu sieciowego w #unix i znalazlem cos takiego

bool isinterfaceonline(std::string interface) {

struct ifreq ifr;

int sock = socket(PFINET6, SOCKDGRAM, IPPROTOIP);

memset(&ifr, 0, sizeof(ifr));


strcpy(ifr.ifr
name, interface.cstr());

if (ioctl(sock, SIOCGIFFLAGS, &ifr) < 0) {


perror("SIOCGIFFLAGS");


}


close(sock);


return !!(ifr.ifr
flags & IFF_UP);

}

Moglby ktos po krotce objasnic mi dzialanie tego kodu?

#programowanie #cpp
@erwit: Linijka po linijce:

Deklarujesz strukturę reprezentującą interfejs sieciowy.

Pobierasz gniazdo połączenia sieciowego (parametry możesz wyszukać w necie, są to stałe jednej z bibliotek sieciowych).

Alokujesz pamięć dla struktury reprezentującej interfejs.

Kopiujesz nazwę interfejsu otrzymaną jako argument funkcji do struktury.

Sprawdzasz, czy da się odczytać flagi interfejsu reprezentowanego o nazwie ifr.ifr__name reprezentowanego przez strukturę ifr.

Jeśli nie (wartość funkcji ioctl mniejsza niż zero), to jest błąd, interfejsu nie ma.

Zamykasz połączenie
Czy ktoś zna tu asemblera? :D

Mamy dwa sposoby zapisu tego samego kodu (taki sam przepływ sterowania):

1.

if(WARUNEK) {

return COŚ;

}

// w przeciwnym razie

2.

if(WARUNEK) {

return COŚ;

} else {

// w przeciwnym razie

}

Wiadomo, że w lepszym stylu jest zapis pierwszy - brak redundancji, wygląda po prostu lepiej. Ale słyszałem też, że na poziomie asemblera przy drugim zapisie mamy dwa skoki zamiast jednego (po jednym
Mam kolejne głupie pytanie. :>

Nauczyłem się w końcu robić porządnie biblioteki C++, statyczne i dynamiczne. Ustawiłem odpowiednie zmienne (LIBRARYPATH, LDLIBRARYPATH, CPLUSINCLUDE_PATH). W obu przypadkach muszę ręcznie linkować do odpowiednich bibliotek przy kompilacji, np

g++ main.cc -lmylib
Jednakże przy dołączaniu do projektów bibliotek standardowych i stl nic ręcznie linkować nie trzeba.

Pytanie: czy można tak skonfigurować system, żeby własnych bibliotek również nie było trzeba ręcznie linkować? Jeśli tak,
@Onoki: STL to zupełnie inna bajka. Jest w całości oparty na headerach. Natomiast co do biblioteki standardowej, to wszystko znajduje się w

libc
: http://en.wikipedia.org/wiki/C_standard_library#Implementations

Nie radzę kombinować z automatycznym linkowaniem dodatkowych bibliotek. Zauważ, że nawet funkcje matematyczne znajdujące się w

libm
linkuje się ręcznie (poprzez

-lm
). Jeśli dodatkowych bibliotek jest dużo i nie chce ci się ich wpisywać, to czas najwyższy zapoznać się z make. :)
#cpp #programowanie

Szybkie pytanie, bo nie mogę znaleźć odpowiedzi, a program mi się #!$%@? i nie wiem, czy to tego wina - jak mam dwie pętle "for", jedna w drugiej i w tej "wewnętrznej" użyję instrukcji break, to przerywa mi się tylko ta wewnętrzna pętla, a ta zewnętrzna wykonuje następną iterację, czy w ogóle mi się wszystkie pętle przerywają?

Jeśli ta druga opcja, to w jaki sposób mogę przerwać wykonywanie tylko tej