Americký výrobce čipů Nvidia získal od vlády prezidenta Donalda Trumpa souhlas s prodejem svých pokročilých počítačových čipů používaných k vývoji umělé inteligence (AI) H20 do Číny. Prodej těchto čipů speciálně upravených pro čínský trh by tak mohl být brzy obnoven, uvedla firma na svém blogu. Americká vláda zakázala prodej v dubnu, v době eskalace obchodního sporu mezi oběma zeměmi. Tehdy to zdůvodnila obavami, že by čipy mohla využívat čínská armáda.
3D software Blender byl vydán ve verzi 4.5 s prodlouženou podporou. Podrobnosti v poznámkách k vydání. Videopředstavení na YouTube.
Open source webový aplikační framework Django slaví 20. narozeniny.
V Brestu dnes začala konference vývojářů a uživatelů linuxové distribuce Debian DebConf25. Na programu je řada zajímavých přednášek. Sledovat je lze online.
Před 30 lety, tj. 14. července 1995, se začala používat přípona .mp3 pro soubory s hudbou komprimovanou pomocí MPEG-2 Audio Layer 3.
Výroba 8bitových domácích počítačů Commodore 64 byla ukončena v dubnu 1994. Po více než 30 letech byl představen nový oficiální Commodore 64 Ultimate (YouTube). S deskou postavenou na FPGA. Ve 3 edicích v ceně od 299 dolarů a plánovaným dodáním v říjnu a listopadu letošního roku.
Společnost Hugging Face ve spolupráci se společností Pollen Robotics představila open source robota Reachy Mini (YouTube). Předobjednat lze lite verzi za 299 dolarů a wireless verzi s Raspberry Pi 5 za 449 dolarů.
Dnes v 17:30 bude oficiálně vydána open source počítačová hra DOGWALK vytvořena v 3D softwaru Blender a herním enginu Godot. Release party proběhne na YouTube od 17:00.
McDonald's se spojil se společností Paradox a pracovníky nabírá také pomocí AI řešení s virtuální asistentkou Olivii běžící na webu McHire. Ian Carroll a Sam Curry se na toto AI řešení blíže podívali a opravdu je překvapilo, že se mohli přihlásit pomocí jména 123456 a hesla 123456 a získat přístup k údajům o 64 milionech uchazečů o práci.
Byla vydána (𝕏) červnová aktualizace aneb nová verze 1.102 editoru zdrojových kódů Visual Studio Code (Wikipedie). Přehled novinek i s náhledy a videi v poznámkách k vydání. Ve verzi 1.102 vyjde také VSCodium, tj. komunitní sestavení Visual Studia Code bez telemetrie a licenčních podmínek Microsoftu.
Řešení dotazu:
...
pristupujes cez va_*
macra. Tj:
#include <stdio.h>
#include <stdarg.h>
void eas_debug(int debug_level, char *str1, ...) {
va_list args;
va_start(args, str1);
while (*str1) {
switch (*str1++) {
case 'd' : {
int a = va_arg(args, int);
printf ("eas_debug%d: got int: %d\n", debug_level, a);
break;
}
}
}
va_end(args);
}
int main() {
eas_debug(1, "%d", 2);
return 0;
}
a vystup:
$ cc -Wall -o atest test.c
$
$ ./atest
eas_debug1: got int: 2
$
S obyčejným printf()
tohle (předání všech parametrů najednou) neuděláte, ale právě proto existuje vprintf()
a příbuzné funkce:
void debug(unsigned l, const char* fmt, ...) { va_list v; if (l > debug_level) return; va_start(v, fmt); vfprintf(stderr, fmt, v); va_end(v); }
Jinak samozřejmě můžete udělat i to, co navrhoval mato, a napsat si svou vlastní funkci, která bude parsovat format string a zpracovávat podle něj jednotlivé parametry. Pokud ale potřebujete jen nadstavbu nad standardní printf()
, zbytečně byste tím jen duplikoval už hotovou práci.
*printf
family som nepomyslel .. takto to funguje ukazkovo.
printf
, namatkovo som teraz grepol zdrojaky z FreeBSD, v sys/boot/arm/at91/libat91/printf.c
je (pastujem iba pre tvoju otazku dolezite veci):
void printf(const char *fmt,...) { va_list ap; va_start(ap, fmt); while ((c = *fmt++)) { c = *fmt++; switch (c) { case 'c': xputchar(va_arg(ap, int)); continue; case 's': for (s = va_arg(ap, char *); *s; s++) xputchar(*s); continue;odkial ten
printf
pochadza je uplne jedno. osobne by som povedal, ze sa to ale teda nada spravit tak, ako si to mal na mysli.
mozno ma ale niekto opravi..
#define debug(...) \ do { \ fprintf(stderr, "%s:%s():%d:", \ __FILE__, __func__, __LINE__); \ fprintf(stderr, __VA_ARGS__); \ fprintf(stderr, "\n"); \ } while(0)nebo pres funkci
void log_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
Tiskni
Sdílej: