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.–

Vojta
C / C++ › Jak vytvořit ve Visual Studi…
30. 9. 2024   #392090

#1 Vojta
Ano to samzř#2 Jerry

Ano jak jsem již uvedl v úvodním příspěvku to funguje a já to používám, problém je, že na to sem tam zapomenu a pak napíšete třeba něco jako

 char *sql;
 sql = "CREATE TABLE Funance("  \
      "ID INT PRIMARY KEY     NOT NULL," \
      "TEMPN          TEXT    NOT NULL," \
      "T1             INT     NOT NULL," \
      "T2             INT," 
      "TR             REAL );";

v C je to OK v C++ ne , tak na to čumite a než vám dojde o co go lámete si hlavu kde je problém.

Kdy šlo o nějaký obskurní jazyk řeknu OK, ale C je snad i dnes základní jazyk v řadě systémů, to by těm indickým šmejdům z MS upadli ruce, aby jeho podpora byla ve VS včetetně šablon projektů ? z mého pohledu C poúžívá více lidí než nějaké  F#.

Vojta
C / C++ › Jak vytvořit ve Visual Studi…
30. 9. 2024   #392087

Dělám věci pro MCU , proto v C, ale větší matematické a algoritmické věci se snažím nejprve odladit na PC a píšu to ve Visual studiu 2022 zpravidla jako konzolovou aplikaci pro windows. Problém je že ve VS není možnost (já jí nenašel) vygenerovat projet pro Windows v C , jen v C++, ano stačí přejmenovat soubor z .cpp na .c ,ale na to občas zapomenu a pak se divím, že mi nepřekládá některé věc, které jsou v C, ale C++ je nepodporuje.

Není nějaká možnost jak VS donutit generovat projekt v C?

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ý