Anonymní profil Beránek – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil Beránek – Programujte.comAnonymní profil Beránek – Programujte.com

 

Příspěvky odeslané z IP adresy 89.102.19.–

Beránek
C / C++ › gcc + Visual Studio identifi…
20. 7. 2023   #391449

To co vidíte jako kód jsou řádky 222 až 224 v hlavičkovém souboru stdio.h , což je standardni knihovna C. Zde verze z gcc v12.2  (debin 12).

Ono se to u čehokoliv o začíná lomítky blbě pozná, ale  

extern char *tempnam (const char *x

je celkem klasika a základní klíčová slova jazyka C .

Jinak problém vyřešen, v parametrech C /C++ projektu byl špatně definován překladač a i c tak překládal c++, po přepnutí na C překladač se to už přeloží, sice neslinkuje, ale to chce jen nadefinovat cesty pro linker.

Beránek
C / C++ › gcc + Visual Studio identifi…
20. 7. 2023   #391446

Pokouším se rozchodit psaní programů pro Linux ve Visual Studiu. Včera jsem celkem bez problémů vše rzhdil tak, že jsem dokázal přeložit Hello Word z VS na debianu 12.

Dnes po doplnění cest na #include, přeložím i komplikovanější věci. Nicméně narazil jsme na proglem spojeny s stdio.h.  

Hlsá mi to chybu E0020    identifikátor "__builtin_free" není definovaný.    usr\include\stdlib.h

 jeden obrázek za 1000 slov

Připojen obrázek.

Poradíte?

C / C++ › Plnění proměnných po bytech?
5. 1. 2023   #390775

#3 Maděj
pokud struktura Data bude obsahovat

unsigned int x;
unsigned int y;

a pdata bude ukazatel na strukturu

unsigned int x = 123;
memcpy(pDara, &x, 4);
memcpy((unsigned char*) pdata+4, &x, 4);

první memcpy nakopiruje 123 do data.x a druhe do data.y

(unsigned char*)  přetypovalo ukazatel na ukaztel na uchar a jeho zvýšenín o 4 se ikaztel posune o 4 byty,

C / C++ › Typedef v C ?
2. 1. 2023   #390761

__attribute__ je sice nejvíce profláklý mechanizmus z GNU, tedy gcc, ale ne neni to  gcc.

Je to pro Clang/LLVM tedy dnes hlavní firemni překladač ARM.
Agoritmus ladim ve Visual Studiu a tam použivam #pragma( pack(push, 1) )

Co to děla snad i tuším, jde o to, že ve struktuře je sice 5x  uint8_t tedy vlastně 40bitů, ale v paměti to zabere jen 32bitů, což je přesně o co mi jde. V paměti se vytvoří pole těchto struktur a to je po naplnění odesláno přes DMA a SPI kamsi a to jde jen kdy to má správnou strukturu protože to končí v hw registrech IC. 
 

C / C++ › Typedef v C ?
1. 1. 2023   #390758

typedef struct {
      uint8_t  staticS             : 3;
      uint8_t  globalS            : 5;
      uint8_t  b                      : 8;
      uint8_t  w1                    : 8;
      uint8_t  w2                    : 8;
}__attribute__((__packed__)) Fram;

Pomoci typeDef jsem vytvořil strukturu, která vlastně představuje 32 bitovou proměnou, v reálu tedy kopii  něčeho jako hw registr.

Fungovat to funguje,  použití

Fram fram;
fram.staticS   =    0b111;
fram.w1   =    128;

Proč to sem vůbec píšu? fram.staticS   nemůže být nic jiného než 0b111 a řádek fram.staticS   =    0b111; je nadbytečný, Libilo by se mi pokud by staticS   byla konstanta o hodnotě  0b111.

Jde to nějak?

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý