Aktywne Wpisy

Minieri +502
Cash! #ladnygol Holandia - Polska 1:1
Mirror: https://streamin.one/v/ecf23650
Powtórki: https://streamin.one/v/665ee5d3
#golgif #mecz #reprezentacja #ms2026
Mirror: https://streamin.one/v/ecf23650
Powtórki: https://streamin.one/v/665ee5d3
#golgif #mecz #reprezentacja #ms2026
źródło: ezgif-7d95b61006d101
Pobierz

uncle_freddie +316






'static volatile' vs. 'static' vs. 'volatile' w C
#nauka #studia #programowanie #jezykc #pracait #naukaprogramowania #mikrokontrolery
Static oznacza, że zmienna jest widoczna tylko w danej jednostce kompilacji (w C++ static ma trochę więcej znaczeń, ale piszesz o C).
void foo () {static int x = 0;
x++;
bool*masz wartość, która mówi czy sensor światła coś wykrył. Wartość tej zmiennej zmienia się niezależnie od programu (kompilator nie wie co się dzieje w tle) i w takim przypadku musisz użyć volatile, żeby wszystkie odczyty z tej zmiennej były@zwei: nie ma :)
void foo () {x =
scope != lifetime
@Saly: ups, czyli: lokalna statyczna zmienna w funkcji ma scope funkcji, a lifetime całego programu.
@Saly: z cache'u właśnie. Chodzi o to, że nic nie stoi na przeszkodzie, żeby zmienne volatile były ładowane z cache L1/L2/L3 a nie z pamięci, przez co są cacheowane. Chyba, że znowu się mylę? :D
@m1chaal: w dużym skrócie
static
globl scope - każda jednostka translacji (czyli plik wynikowy '.o' który robisz z '.c') ma swój słownik nazw. Domyślnie wszystkie globalne zmienne i funkcje lądują w tym słowniku. Dzieki temu możesz odwołać się do tej zmiennej z innego pliku poprzez użycie tej nazwy. Użycie
@afe1: mylisz się, volatile nie ma nic wspólnego z cache'm, rejestrami ani niczym innym poza kodem C i jak z niego jest generowany assembler. To jest po prostu atrybut zmiennej który mówi, że ma ją obsługiwać tak albo inaczej.
@afe1: tak i nie. Cache L1/L2/L3 to tylko szczegół implementacyjny, który nie zmienia semantyki. To o czym mówię yo moźliwość ignorowania odczytu danej zmiennej (z pamięci do rejestru) jeśli kompilator wyśledzi, że ta zmienna już jest przeczytana i nikt po drodze jej
@BeginEnd:no i gdzie tu się niby mylę? To co napisałeś nie zabrania aby dane volatile były ładowane z np L3, czyli z cache.
@Saly: ok, rozumiesz każdorazowe ładowanie jako brak