Pytania oznaczone «c-preprocessor»

125
Powinienem użyć #define, enum czy const?

W projekcie C ++, nad którym pracuję, mam wartość typu flagi, która może mieć cztery wartości. Te cztery flagi można łączyć. Flagi opisują rekordy w bazie danych i mogą być: nowy rekord usunięty rekord zmodyfikowany rekord istniejący rekord Teraz dla każdego rekordu chcę zachować ten atrybut,...

121
Łączenie ciągów makr C / C ++

#define STR1 "s" #define STR2 "1" #define STR3 STR1 ## STR2 Czy można łączyć, że STR3 == "s1"? Możesz to zrobić, przekazując argumenty do innej funkcji Macro. Ale czy istnieje bezpośredni

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

104
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,...

101
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

100
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

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

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