Google představil telefon Pixel 10a. S funkci Satelitní SOS, která vás spojí se záchrannými složkami i v místech bez signálu Wi-Fi nebo mobilní sítě. Cena telefonu je od 13 290 Kč.
Byl publikován přehled dění a novinek z vývoje Asahi Linuxu, tj. Linuxu pro Apple Silicon. Fedora 43 Asahi Remix s KDE Plasma už funguje na M3. Zatím ale bez GPU akcelerace. Vývojáře lze podpořit na Open Collective a GitHub Sponsors.
Red Hat představil nový nástroj Digital Sovereignty Readiness Assessment (GitHub), který organizacím umožní vyhodnotit jejich aktuální schopnosti v oblasti digitální suverenity a nastavit strategii pro nezávislé a bezpečné řízení IT prostředí.
BarraCUDA je neoficiální open-source CUDA kompilátor, ale pro grafické karty AMD (CUDA je proprietární technologie společnosti NVIDIA). BarraCUDA dokáže přeložit zdrojové *.cu soubory (prakticky C/C++) přímo do strojového kódu mikroarchitektury GFX11 a vytvořit tak ELF *.hsaco binární soubory, spustitelné na grafické kartě AMD. Zdrojový kód (převážně C99) je k dispozici na GitHubu, pod licencí Apache-2.0.
Podvodné reklamy na sociálních internetových platformách, jako je Facebook, Instagram nebo X, vytvořily loni v Česku jejich provozovatelům příjmy 139 milionů eur, tedy zhruba 3,4 miliardy korun. Proti roku 2022 je to nárůst o 51 procent. Vyplývá to z analýzy Juniper Research pro společnost Revolut. Podle výzkumu je v Česku zhruba jedna ze sedmi zobrazených reklam podvodná. Je to o 14,5 procenta více, než je evropský průměr, kde je podvodná každá desátá reklama.
Desktopové prostředí KDE Plasma bylo vydáno ve verzi 6.6 (Mastodon). Přehled novinek i s videi a se snímky obrazovek v oficiálním oznámení. Podrobný přehled v seznamu změn.
Czkawka a Krokiet, grafické aplikace pro hledání duplicitních a zbytečných souborů, byly vydány ve verzi 11.0. Podrobný přehled novinek v příspěvku na Medium. Od verze 7.0 je vedle frontendu Czkawka postaveného nad frameworkem GTK 4 vyvíjen nový frontend Krokiet postavený nad frameworkem Slint. Frontend Czkawka je už pouze v udržovacím módu. Novinky jsou implementovány ve frontendu Krokiet.
Jiří Eischmann na svém blogu publikoval článek Úvod do MeshCore: "Doteď mě radioamatérské vysílání úplně míjelo. Když jsem se ale dozvěděl, že existují komunity, které svépomocí budují bezdrátové sítě, které jsou nezávislé na Internetu a do značné míry taky elektrické síti a přes které můžete komunikovat s lidmi i na druhé straně republiky, zaujalo mě to. Když o tom přede mnou pořád básnili kolegové v práci, rozhodl jsem se, že to zkusím taky.
… více »Byla vydána verze 0.5.20 open source správce počítačových her na Linuxu Lutris (Wikipedie). Přehled novinek v oznámení na GitHubu. Instalovat lze také z Flathubu.
Peter Steinberger, autor open source AI asistenta OpenClaw, nastupuje do OpenAI. OpenClaw bude převeden pod nadaci a zůstane otevřený a nezávislý.
Makefile scanner-test.c scanner.c scanner.h str.c str.ha pri prekladu pres make mi to stale haze toto:
$ make gcc -Wall -std=c99 -pedantic -lm -c scanner-test.c gcc -Wall -std=c99 -pedantic -lm -c scanner.c gcc -Wall -std=c99 -pedantic -lm -c str.c gcc -Wall -std=c99 -pedantic -lm scanner-test.o scanner.o str.o -o scanner-test scanner.o:(.data+0x0): multiple definition of `keywords' scanner-test.o:(.data+0x0): first defined here collect2: ld returned 1 exit status make: *** [scanner-test] Error 1keywords je pole, ktere je definovane POUZE jednou v souboru scanner.h. Mam podezreni, ze za toto muze muj Makefile. Ten vypada takto:
CC=gcc CFLAGS=-Wall -std=c99 -pedantic -lm all: scanner-test scanner-test: scanner-test.o scanner.o str.o $(CC) $(CFLAGS) scanner-test.o scanner.o str.o -o scanner-test scanner.o: scanner.c str.h $(CC) $(CFLAGS) -c scanner.c str.o: str.c str.h $(CC) $(CFLAGS) -c str.c scanner-test.o: scanner-test.c str.h scanner.h $(CC) $(CFLAGS) -c scanner-test.c clean: rm -f *.o *.out $(PRJ)Nezda se mi vsak, ze by se tam neco natahovalo 2x. Uz jsem z toho zoufaly, hledani teto priciny mi uz zabralo vice casu nez samotne napsani programu, muzete mi prosim poradit? Dekuji.
CC=gcc CFLAGS=-Wall -std=c99 -pedantic -lm all: str.o scanner.o scanner-test.o $(CC) $(CFLAGS) -o scanner-test str.o scanner.o scanner-test.o clean: rm -f *.o *.out $(PRJ)Jeste popisu co jednotlive souboru includuji:
scanner.c <-- scanner.h
str.h
str.c <-- str.h
scanner-test <-- str.h
scanner.h
Vsechny hlavickove soubory jsou opatreny konstrukci
#ifndef XXX #define XXX ... #endif
#ifndef TESTYTESTY_H
#define TESTYTESTY_H
cosi
#endif
a.h ---- extern int a;
a.c ---- int a = 0;pak to zacne fungovat.
$ make gcc -Wall -std=c99 -pedantic -lm -c -o str.o str.c gcc -Wall -std=c99 -pedantic -lm -c -o scanner.o scanner.c In file included from scanner.c:5: scanner.h:12: warning: ‘keywords’ initialized and declared ‘extern’ gcc -Wall -std=c99 -pedantic -lm -c -o scanner-test.o scanner-test.c In file included from scanner-test.c:4: scanner.h:12: warning: ‘keywords’ initialized and declared ‘extern’ gcc -Wall -std=c99 -pedantic -lm -o scanner-test str.o scanner.o scanner-test.o scanner-test.o:(.data+0x0): multiple definition of `keywords' scanner.o:(.data+0x0): first defined here collect2: ld returned 1 exit status make: *** [all] Error 1Nepomohlo:/
static const char* keywords[] = {
...
};
make:
$ make gcc -Wall -std=c99 -pedantic -lm -c -o str.o str.c gcc -Wall -std=c99 -pedantic -lm -c -o scanner.o scanner.c gcc -Wall -std=c99 -pedantic -lm -c -o scanner-test.o scanner-test.c scanner.h:12: warning: ‘keywords’ defined but not used gcc -Wall -std=c99 -pedantic -lm -o scanner-test str.o scanner.o scanner-test.oNejak to ale nechapu, proc jsem musel promennou deklarovat jako static? Jako deklarace te promenne je v souboru scanner.h. Jeji pouziti je vsak ve scanner.c. Jaktoze si tedy scanner.c nestezuje, ze nevidi definici teto promenne?
const char* keywords[] = {
...
};
presouvat ze scanner.h do scanner.c, vzdyt od toho mimo jine scanner.h, je? Na deklaraci promennych a typu, ktere pak pouziva *.c soubor.
Když napíšete
int a; int b = 5;
tak obě proměnné zároveň definujete, tj. v příslušném modulu bude tato proměnná vytvořena (jestli tam máte nebo nemáte inicializaci, nehraje roli). Napíšete-li takovou věc do hlavičkového souboru, proměnná se vytvoří v každém modulu, do kterého ho includujete, takže linker dostane kolizi. Když ale napíšete
extern int a; extern int b;
řeknete tím překladači, že proměnné a, b jsou typu int, ale že je v tomto modulu nemá vytvářet, protože jsou definovány jinde (tj. externě). První příklad odpovídá definici funkce (tj. včetně těla), zatímco druhý její deklaraci (jen hlavička).
Takže správný postup, jak už tu padlo, je
extern const char* keywords[];
ve scanner.h a
extern const char* keywords[] = {
...
};
ve scanner.c, čímž zajistíte, že ve všech modulech (kde se includuje scanner.h) budete mít proměnnou deklarovanou, ale vytvoří se jen ve scanner.o, takže linker na žádnou kolizi nenarazí. Použití static je v tomto případě chybné, protože to by znamenalo, že to sice kolidovat nebude, ale jen proto, že každý modul bude mít svou vlastní proměnnou stejného jména.
scanner.c ma byt
const char* keywords[] = { // bez extern
...
};
jinak to bude kolegovi pri linkovani pro zmenu rvat, ze keywords neexistuje.
vzdyt od toho mimo jine scanner.h, je? Na deklaraci promennych a typu, ktere pak pouziva *.c soubor.
Ne tak docela. Hlavičkový soubor slouží především k deklaraci funkcí/proměnných které využívají jiné moduly. Pokud, jak zde píšete, proměnnou/datový typ používáte pouze a jenom v *.c souboru příslušném k danému *.h souboru, je více než moudré proměnnou v hlavičkovém souboru neuvádět a navíc jí deklarovat jako static. Předejdete tak problémům se stejně pojmenovanými "lokálními" funkcemi/proměnnými a "zpřehledníte" informaci o tom, co vlastně daný modul exportuje.
Tiskni
Sdílej: