Pytania otagowane jako c-preprocessor

Tekstowy procesor makr stosowany przed kompilacją programów w językach C i C ++. Ten tag może być również używany w przypadku pytań dotyczących innych kompilatorów / języków pochodzących z lub mających identyczne funkcje, takie jak #directives w Objective-C lub C #.

19
#ifdef vs #if - co jest lepsze / bezpieczniejsze jako metoda włączania / wyłączania kompilacji poszczególnych sekcji kodu?
To może być kwestia stylu, ale w naszym zespole deweloperów jest trochę podziałów i zastanawiałem się, czy ktoś inny ma jakieś pomysły w tej sprawie ... Zasadniczo mamy kilka instrukcji debugowania print, które wyłączamy podczas normalnego programowania. Osobiście wolę wykonać następujące czynności: //---- SomeSourceFile.cpp ---- #define DEBUG_ENABLED (0) ... SomeFunction() …



10
Numer wiersza C / C ++
Czy ze względu na debugowanie mogę uzyskać numer wiersza w kompilatorach C / C ++? (sposób standardowy lub specyficzny dla niektórych kompilatorów) na przykład if(!Logical) printf("Not logical value at line number %d \n",LineNumber); // How to get LineNumber without writing it by my hand?(dynamic compilation)


7
Przecinek w makrze C / C ++
Powiedzmy, że mamy takie makro #define FOO(type,name) type name Którego moglibyśmy użyć FOO(int, int_var); Ale nie zawsze tak prosto: FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2 Oczywiście mogliśmy zrobić: typedef std::map<int, int> map_int_int_t; FOO(map_int_int_t, map_var); // OK co nie jest zbyt ergonomiczne. Niezgodności …
104 c++  c  macros  c-preprocessor 

11
Makro a funkcja w C
Zawsze widziałem przykłady i przypadki, w których użycie makra jest lepsze niż użycie funkcji. Czy ktoś mógłby mi wyjaśnić na przykładzie wady makra w porównaniu z funkcją?

4
Rola #ifdef i #ifndef
#define one 0 #ifdef one printf("one is defined "); #ifndef one printf("one is not defined "); Jaka jest w tym rola #ifdefi #ifndefi jaki jest wynik?

8
Jak zdefiniować symbol preprocesora w Xcode
Czy można ustawić symbol kompilacji warunkowej, ustawiając właściwości w projekcie Xcode? Moim celem jest stworzenie symbolu, który będzie dostępny dla wszystkich plików bez konieczności używania importu / dołączania, tak aby zestaw wspólnych klas mógł mieć specjalne zachowanie w niektórych projektach. Jak poniżej, ale z moimi własnymi symbolami. #if TARGET_IPHONE_SIMULATOR ... …

8
Wcięcie #defines
Wiem, że #defines itp. Zwykle nie są wcięte. Czemu? W tej chwili pracuję nad jakimś kodem, który ma okropną mieszankę #defines, #ifdefs, #elses, #endifs itd. Wszystko to często jest pomieszane z normalnym kodem C. Brak wcięć w literach #definesprawia, że ​​są one trudne do odczytania. A mieszanka kodu z wcięciem …

12
Preprocesor C ++ __VA_ARGS__ liczba argumentów
Proste pytanie, na które nie mogłem znaleźć odpowiedzi w sieci. Jak znaleźć liczbę argumentów w makrach argumentów o zmiennej liczbie argumentów? Jestem w porządku z preprocesorem doładowania, jeśli ma rozwiązanie. Jeśli to robi różnicę, próbuję przekonwertować zmienną liczbę argumentów makr, aby zwiększyć sekwencję, listę lub tablicę preprocesora w celu dalszego …


4
Pragma w definiowaniu makra
Czy istnieje sposób osadzenia instrukcji pragmy w makrze z innymi instrukcjami? Próbuję osiągnąć coś takiego: #define DEFINE_DELETE_OBJECT(type) \ void delete_ ## type_(int handle); \ void delete_ ## type(int handle); \ #pragma weak delete_ ## type_ = delete_ ## type Nie ma problemu z rozwiązaniami doładowania (z wyjątkiem fali), jeśli takie …

14
Kompiluj, kompiluj lub archiwizuj problemy z Xcode 4 (i zależnościami)
To pytanie rozwinęło się w ciągu ostatnich kilku tygodni, aby objąć bardziej ogólne problemy z xcode4 (i aktualizowanie projektów ze starszych wersji xcodes). Jednak wiele problemów można rozwiązać, postępując zgodnie z tym samym zestawem instrukcji. Jeśli masz którykolwiek z poniższych problemów, wypróbuj metody z zaakceptowanej odpowiedzi: Xcode 4 nie archiwizuje …

8
Dlaczego makra preprocesora są złe i jakie są alternatywy?
Zawsze o to pytałem, ale nigdy nie otrzymałem naprawdę dobrej odpowiedzi; Myślę, że prawie każdy programista jeszcze przed napisaniem pierwszego „Hello World” zetknął się z wyrażeniem „makro nie powinno być nigdy używane”, „makro jest złe” i tak dalej, moje pytanie brzmi: dlaczego? Czy po tylu latach istnieje prawdziwa alternatywa dla …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.