Sprawdź, jak dobrze znasz język C
Jak oceniasz swoją znajomość C? Czy programowanie w tym języku nie ma przed Tobą żadnych tajemnic? Spróbuj swoich sił w tym quizie!
Jak oceniasz swoją znajomość C? Czy programowanie w tym języku nie ma przed Tobą żadnych tajemnic? Spróbuj swoich sił w tym quizie!
W prawie każdym projekcie potrzebujemy przechowywać jakieś wartości, które zmieniamy w zależności od wersji projektu. Najbardziej oczywistym przykładem jest właśnie numer wersji. Ale czasem chcemy wyświetlać również commit id z gita, datę kompilacji, czy użytą wersję kompilatora. Nie muszę chyba dodawać, że aktualizacja takich danych ręcznie jest niezwykle uciążliwa, a czasem wręcz niemożliwa (jak dodać…
Już od kilku lat w styczniu podsumowuję, co wydarzyło się w poprzednim roku. I za każdym razem przypominam sobie takie zdanie, że przeceniamy ile jesteśmy w stanie zrobić w ciągu jednego dnia, ale nie doceniamy ile jesteśmy w stanie zrobić w ciągu jednego roku. Za każdym razem taka retrospektywa pozwala mi zrozumieć jak wiele się…
W tym artykule pokażę jak napisać prosty skrypt cmake. Zrealizujemy najważniejsze zadania, jakich wymagamy od skryptu budowania: Dodawanie plików źródłowych. Określenie ścieżek include. Określenie globalnych define’ów. Dodanie bibliotek statycznych. Dodanie flag kompilacji. Dzięki skryptowi CMake możemy łatwo uruchamiać kompilację na różnych systemach operacyjnych, systemach budowania i generować projekty na różne IDE.
Cmake jest fajną alternatywą dla pisania własnych skryptów makefile, czy korzystania z wyklikanej konfiguracji projektu w naszym IDE. Jednak początkowo może być trudno zmusić go do działania z mikrokontrolerami. Dlatego w tym artykule pokażę jak stworzyć plik konfiguracyjny dla naszego toolchaina umożliwiający budowanie projektów na STM32.
Często podczas nauki C słyszymy, że tablica tak naprawdę jest wskaźnikiem. Oczywiście takie uproszczenie pomaga na początku zrozumieć pewne rzeczy, ale w końcu warto poznać różnice.
W C++ trwają starania, żeby praktycznie nigdy nie trzeba było korzystać z preprocesora. Jednym z typowych zastosowań define w C jest deklarowanie stałych będących rozmiarami tablic. W C++ od dawna możemy używać w tym celu const, a od jakiegoś czasu (dokładniej od C++11) również constexpr. Jednak kiedy zechcemy przenieść te praktyki do C czeka nas…
Od jakiegoś czasu biorę udział w akcji #30devstories i publikuję nagrania na YouTube. Chodzi w skrócie o to, żeby nagrać 30 filmików związanych z różnymi aspektami programowania. Na razie opublikowałem 6 odcinków: Więcej o samej akcji mówię tutaj: Kolejne odcinki znajdziecie na moim kanale YouTube. Jeżeli również chcesz wziąć udział w akcji – weź kamerę…
Ostatnio było o inicjalizacji tablic, dzisiaj pora na struktury. Ostatnio zdarzył mi się projekt, gdzie kompilator nie wspierał inicjalizacji z podawaniem nazwy pól. Dlatego pomyślałem, że dobrze będzie zebrać w jednym miejscu opcje inicjalizacji, od jakich standardów są dostępne i co się dzieje, kiedy nie podamy wartości dla wszystkich pól.
Jakiś czas temu widziałem taki kod inicjalizujący tablicę: Celem autora było zainicjalizowanie wszystkich elementów tą samą wartością. Pewnie dla wielu z Was błąd w tej linijce wyda się oczywisty. Ale skoro inicjalizuje wszystkie wartości na zero, to można pomyśleć, że analogiczny zapis inicjalizuje wszystko na -1. Niestety tylko indeks zerowy przyjmie wartość -1, natomiast cała…