• 1
@agsbajahs w skrócie, skoro już ogarnąłeś, zapewnia to możliwość użycia zarówno w c i cpp. W przypadku gdy zdefiniowane jest cpp, potrzebujesz "extern c" by nazwy nie zostały...powiedzmy zanonimizowane (brak mi słowa na "mangled"). C natomiast nie zna "extern", stąd ifdef.
  • Odpowiedz
Mam projekt w #cplusplus, którym, póki co, tylko main jest .cpp, reszta plików jest w C. Każdy plik .h i .c opatrzony jest dyrektywą warunkową #ifdef __cplusplus extern "c"{ itp odpowiednio tuz przed końcem pliku.
Dwa identyczne pod względem plików kody, C++ przeleciany debugerem, wszystko sie wykonuje.
Niestety projekt c zajmuje około 22kB kodu i nieco ponad 40kB ramu, za to kod spod arm_none_eabi_g++ daje na wyjściu około 12kB kodu i
#jezykc #programowanie a tak na prawdę to nie programowanie tylko edycja tekstu, bo preprocesor , więc wołam ludzi obserwujących taki #define #ifdef #endif #include. Nie wołam ludzi obserwujących pragma. ( ͡° ʖ̯ ͡°)
Zapomniałem i nie mogę znaleźć w googlu jak się sklejało makra.
Mam sobie plik nagłówkowy w którym są przykładowo:

#define GPIO_PinSource0 ((uint8_t)0x00)
#define GPIO_PinSource1 ((uint8_t)0x01)
#define GPIO_PinSource2 ((uint8_t)0x02)

oraz

#define GPIO_Pin_0 ((uint16_t)0x0001) /* Pin
@kiciek: z głowy czy;li z niczego (jak powiedział kiedyś klasyk),

#define twojanazwa GPIO_PinSource##USED_PIN
Jeśli rzeczywiście oczywiście dobrze zrozumiałem Twoje intencje
  • Odpowiedz
#cpp #c++ #gcc #programowanie

Mireczki mam dziwny problem z kompilacją pewnego projektu w C++. Muszę ustawić pewne macro które w kodzie sprawdzanie jest #ifdef'em z poziomu kompilatora. Kompiluje przy użyciu MinGW na windowsie (g++).

Problem w tym, że w Code::Blocks dodaje do listy "defines" wpis
FW_GRAPHICS, podczasu budowania widzę, że parametr
-DFW_GRAPHICS jest przekazywany do g++ natomiast sam kod tak jakby zlewa tego i zachowuje się jakby dyrektywy nie było....