macros

Co to jest ": -!!"w kodzie C?

Natknąłem się na ten dziwny kod makra w /usr/include/linux/kernel.h : /* Force a compilation error if condition is true, bu ... ERO(e) (sizeof(struct { int:-!!(e); })) #define BUILD_BUG_ON_NULL(e) ((void *)sizeof(struct { int:-!!(e); })) Co robi :-!!?

Jakie są najgorsze nadużycia w prawdziwym świecie makr/pre-procesora, jakie kiedykolwiek spotkałeś?

zamknięty. To pytanie i jego odpowiedzi są zamknięte , ponieważ pytanie jest off-topic, ale ma znaczenie historyczne. Obecni ... odaj przykład, gdzie makro było naprawdę lepsze niż rozwiązanie nie-makro. Powiązane pytanie: kiedy są korzystne makra C++?

Przeciążenie makra na Ilość argumentów

Mam dwa makra FOO2 i FOO3: #define FOO2(x,y) ... #define FOO3(x,y,z) ... Chcę zdefiniować nowe makro FOO w następujący sp ... kra FOO (używając __VA_ARGS__ lub w inny sposób), aby uzyskać taki sam efekt wysyłania FOO(x,y) do FOO2 i FOO(x,y,z) do FOO3?

C makro definicja określić big endian lub little endian maszyny?

Czy istnieje jednoliniowa Definicja makra do określenia endianness maszyny. Używam poniższego kodu, ale konwersja go do makra ... int test_var = 1; unsigned char test_endian* = (unsigned char*)&test_var; return (test_endian[0] == NULL); }

Funkcje wbudowane a makra preprocesora

Czym funkcja inline różni się od makra preprocesora?

Zapisywanie makr Vima

Czy ktoś wie jak poprawnie zapisać / ponownie użyć makr nagranych wewnątrz edytora vim?

Czy typedef i # define są takie same w c?

Zastanawiam się czy typedef i #definesą takie same w c ?

Dziwne definicje makr TRUE I FALSE

Widziałem następujące definicje makr w książce kodowania. #define TRUE '/'/'/' #define FALSE '-'-'-' Nie było tam żadnego wyjaśnienia. Proszę mi wyjaśnić, jak będą one działać jako TRUE i FALSE.

C multi-line makro: do/while(0) vs scope block [duplikat]

Możliwe duplikaty:jaki jest pożytek z do while(0) gdy definiujemy makro?dlaczego w makrach C/C++ występują czasami bezsens ... nia kodu w ten sposób, a nie za pomocą podstawowego blok: #define FOO \ { \ do_stuff_here \ do_more_stuff \ }

Jak rozpoznać platformę / kompilator z makr preprocesora?

Piszę wieloplatformowy kod, który powinien się skompilować pod Linuksem, windows, Mac OS. W systemie windows muszę obsługiwać ... #ifdef WIN32 #include <windows.h> #endif Ale jak rozpoznać Linuksa i mac OS? Czym są nazwy (lub etc. Powinienem użyć?

Rzeczywiste wykorzystanie makr X

Właśnie dowiedziałem się o x-makrach . Jakie rzeczywiste zastosowania X-makr widziałeś? Kiedy są one odpowiednie narzędzie do pracy?

Tworzenie makra w języku C Z # # i linią (połączenie tokena z makrem pozycjonującym)

Chcę stworzyć makro C, które stworzy funkcję o nazwie opartej na numer linii. Myślałem, że mogę zrobić coś takiego (prawdziwa ... INE__(void) {} Czy to możliwe? (tak, jest prawdziwy powód, dla którego chcę to zrobić nie matter how useless this seems).

Jaki jest pożytek z do while(0) gdy definiujemy makro? [duplikat]

to pytanie ma już odpowiedzi tutaj : ... (ptr)->next = (ptr); (ptr)->prev = (ptr); \ } while (0) Dlaczego używają tego zamiast definiować to po prostu w {}?

Makro pliku pokazuje pełną ścieżkę

Standardowe, predefiniowane makro__ FILE _ _ dostępne w języku C pokazuje pełną ścieżkę do pliku. Czy jest jakiś sposób na skrócenie ścieżki? Znaczy zamiast /full/path/to/file.c Widzę to/file.c Lub file.c

Opcjonalne parametry z makrami C++

Czy Jest jakiś sposób na uzyskanie opcjonalnych parametrów za pomocą makr C++? Jakieś przeciążenie też byłoby miłe.

Co oznacza "# pragma comment"?

Co oznacza #pragma comment poniżej? #pragma comment(lib, "kernel32") #pragma comment(lib, "user32")

Do czego przydatne są makra C?

Napisałem trochę C , i mogę go przeczytać wystarczająco dobrze, aby uzyskać ogólne pojęcie o tym, co robi, ale za każdym raz ... zwyczajony do mikro optymalizacji pisania C , ale preprocesor wydaje się być złożonym rozwiązaniem kilku prostych problemów.

Dlaczego warto używać makr w C? [duplikat]

to pytanie ma już odpowiedzi tutaj : ... stępowaniem, ale coś mi mówi, że brakuje mi jakiegoś większego punktu. Jakie przydatne rzeczy mogą Dla ciebie zrobić makra?

Makro Vim na każdej linii wizualnego zaznaczenia

Chciałbym uruchomić makro na każdej linii w zaznaczeniu, zamiast sumować liczbę linii w mojej głowie. Na przykład, mogę napis ... st to trywialnie powtarzalne, ale są inne przypadki, które pojawiają się, które nie są takie proste, że wolałbym używać makr.

Przecinek w makro C/C++

Powiedzmy, że mamy takie makro #define FOO(type,name) type name Które moglibyśmy wykorzystać jak FOO(int, int_var); A ... ie jest zbyt ergonomiczne. Należy rozwiązać problem niezgodności Typu Plus. Jakiś pomysł, jak rozwiązać ten problem z makro ?