Deklaruję wskaźnik na wskaźnik na longa:

long **return_vals = calloc(10, sizeof(long*));
Teraz próbuję się odwołać do wartości long:

printf("%ld ", *return_vals[i]);
  • 30
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Oglądałem weekly filmik od Jasona Turnera, w którym pojawia się jego CMake file wraz z warningami. Gość na filmiku wybiera aktywne warningi, opisujac komentarzem ich sens. W praktyce robiłem odwrotnie, blacklistując kompletnie zbędne przy włączonym maksymalnym (albo jakoś bardzo wysokim) poziomie.

Naszło mnie do zapytania: w jaki sposób definiujecie jakie warningi pozostaną w trakcie kompilacji?

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

@Golem_Piotr: używam takiego o -Werror -Weverything w clangu: https://embeddedartistry.com/blog/2017/3/7/clang-weverything. Do całości 10 wykluczeń i gra gitara.

Na podlinkowanej przez Ciebie liście jest wyłączony -Wno-unused. Sam autor sugeruje, że irytuje go ten warning w trakcie developmenu, ale dobrze czasem włączyć. To potencjalnie error-prone.

Taka lista oparta o whitelistowanie ma zasadniczą wadę: jeżeli nowa wersja kompilatora wprowadziłaby nowe warningi dla przypadków dotyczących np. nowszej wersji języka, o ile nie wejdą
  • Odpowiedz
Treść przeznaczona dla osób powyżej 18 roku życia...
  • 35
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@CppPolska: Chciej pisać o C++, znacznij od make... ¯\_(ツ)_/¯

Kurde, kisne z tego artykułu:

choć - w wielu przypadkach - może to być nader skomplikowane

Nie to że zwykły bash zrobi dokładnie to samo i jest dużo prostszy. Jedyne czym się różni to szybkość, pomijanie już skompilowanych kawałków i równoległe budowane,
  • Odpowiedz
@CppPolska: Ale bym sobie tak takiego bloga popisał, ale nie mam kiedy o tym, że mi się nie chce to już nie wspominając :(

I tak od lat żałuje, że dalej nie zrobiłem (,)

Szanuję za CLion i całkiem dobry artykuł!
  • Odpowiedz
@DerMirker by może zapomniałem dodać: moim zdaniem.
Programując w C++ dużo korzystam z konsoli a robienie tego na Windows doprowadza mnie do placzu. Ostatnio próbowałem zmusić qt na W7 do współpracy - debugger odmawiał. Na Linuxie po prostu mi zadziałało.
Poza tym, mam wrażenie że obecnie dużo (większość?) developmentu dla C++ robi się na Linuxie: embedded jest po prostu wygodniej - nie wiem jak z gamedev.
  • Odpowiedz
Hej. Mam problem z wyświetleniem wartości bajta w systemie dziesiętnym. W skrócie - koniecznie wykorzystując unie muszę zinterpretować wartość int na pojedyncze bajty. Dla niektórych wartości działa to dobrze, lecz dla wartości int np.255 program wyświetla mi -1 0 0 0 jako wartości dziesiętne bajtów. Dlaczego nie wyświetli wartości 255 skoro wykorzystując %d powinno to interpretować jako wartość dodatnią dla tak małej wartości. Zamienienie w kodzie %d na %u tylko pogarsza sprawę.
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Ogarniam wątki, ale nie rozumiem póki co jednej rzeczy. Dlaczego ten program https://pastebin.com/aHN0ugAk nie za każdym razem wykonuje funkcję którą przekazałem do funkcji tworzącej wątek? Jak widać na obrazku, w tym konkretnym uruchomieniu utworzyłem 10 wątków, a funkcja która wyświetla ID z poziomu wątku wykonała się 8 a nie 10 razy. W dodatku dwa razy wykonała się w wątku ósmym. O co tu chodzi?

#jezykc #programowanie
M.....3 - Ogarniam wątki, ale nie rozumiem póki co jednej rzeczy. Dlaczego ten progra...

źródło: comment_812XdXRlH31XNORu5d0gYM8VExqSpWPA.jpg

Pobierz
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Matt23: ogolnie to wypisuje, z tym, ze dostep do bufora nie jest zabezpieczony dla integralności. Ogólnie sposób programowania jeśli taki jest jak pokazany, to nie jest najlepszy.... exit winien być ostatecznością, a nie wywoływany ot tak ze środka kodu przy drobnym błędzie... Mozliwe, że ksiązka jest dobra jeśli chodzi o merytorykę dotyczącą systemów informatycznych, ale programowania bym się z niej nie uczył...
  • Odpowiedz
@konik_polanowy: a co chciałbyś działać w C? Ten język to obecnie mikrokontrolery, sterowniki do sprzętu, aplikacje konsolowe(Linux motzno). Do kucowania w tym polecał Linuksa na maszynie wirtualnej, albo normalnie postawionego, bo w windowsie to Cię k-----a weźmie już na etapie ustawiania środowiska.

Ja zaczynałem na mikrokontrolerach AVR od tego kursu:
http://www.hobby.abxyz.bplaced.net/index.php?pid=4&cid=1

To jest przydatne, ale to nie kurs, tylko raczej taka ściągawka jak co robić
http://goalkicker.com/CBook/
  • Odpowiedz
Witajcie mireczki. Wczoraj i dziś miałem czas, więc dorobiłem do mojego nano serwera http na #esp8266 bardziej zaawansowany interfejs do zmiany ustawień WiFi z wykorzystaniem AJAXa. Nawet jest dynamicznie generowana ikonka zasięgu+czy sieć jest zabezpieczona.
Bierzcie i kucujcie z tego wszyscy ( ͡°( ͡° ͜ʖ( ͡° ͜ʖ ͡°)ʖ ͡°) ͡°):
https://github.com/QB4-dev/esp_nano_httpd_advanced_example


#qbadev #
QBA_ - Witajcie mireczki. Wczoraj i dziś miałem czas, więc dorobiłem do mojego nano s...

źródło: comment_YKuodTJt8GOctwxs5g4WqIK9JjQYZyI8.jpg

Pobierz
  • 8
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

Mircy, zgłupiałem całkowicie. Ten program https://pastebin.com/ns0wnLxr raz zwraca, że nieistniejący katalog istnieje, a raz że nie. Póki co zaobserwowałem to na dwóch maszynach wyposażonych w system debian8 i kompilator gcc w wersji gcc (Debian 4.9.2-10) 4.9.2
Dzieje się to nie tylko z jednym katalogiem. Inny mój program losowo identyfikuje typ danego pliku na komputerze, czasem nawet identyfikując go jako żaden z możliwych, to znaczy ani jako folder, ani plik zwykły, nie socket co
  • 5
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Matt23: jeśli plik nie istnieje, to stat/fstat/lstat nie zapisuje nic do struktury i zwraca błąd ENOENT, który tutaj pięknie ignorujesz
  • Odpowiedz
dlaczego jak chce wyświetlić jakiś element tej tablicy, to wyskakują mi losowe liczby?

for(index = 1, potega[0] = 2; index < 8; index++){

potega[index] *= 2;

}
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Pierrdonauta: a co Ty tam mnożysz... powinno być

potega[index] = potega[index-1] * 2;
bo w swoim rozwiązaniu mnożysz obecny element * 2 który pewnie zawiera śmieci w pamięci
a powinieneś mnożyć poprzedni element
  • Odpowiedz
@Pierrdonauta:
zainicjalizowałeś potęga[0]=2, prawdopodobnie reszta tabeli potega to śmieci(jeżeli zainicjalizowałeś np. tylko int potega[8];), które były wcześniej w pamięci. następnie mnożesz te śmieci x2.

edit: całe życie drugi
  • Odpowiedz
@RicoElectrico: bo jak masz bardziej zawiklany kod, to lepiej jest sobie pewne dane grupowac. Dodatkowo struktury mozna wykorzystac do tego by moc projektowac obiektowo, co tez ulatwia niekiedy myslec nad schematem aplikacji. Dodatkowo, czesto strukture przekazujesz jako wskaznik, a wiec jest szybciej, az w koncu przy optymalizacjach adres struktury moze byc przekazany w jednym rejestrze, miast przez stos, co jest szybsze.
  • Odpowiedz