GCC nie wymaga „opakowywania” (ani realizacji), chyba że wynik wymaga „ujednolicenia”. Gcc ma funkcje, ale WSZYSTKIE można zrobić za pomocą zwykłego C w wersji 1 (a niektórzy twierdzą, że Berkeley 4.3 C jest o wiele szybszy, że warto nauczyć się go używać).
** Clang (llvm) NIE WYKONUJE PRAWIDŁOWO WHITE SPACE dla rozwijania makr - dodaje białe znaki (co z pewnością niszczy wynik jako identyfikator C do dalszego przetwarzania wstępnego) **, clang po prostu nie wykonuje rozszerzenia # lub * makro jak oczekuje się od preprocesora C przez dziesięciolecia. Podstawowym przykładem jest kompilacja X11, makro "Concat3" jest zepsute, jego wynikiem jest teraz MISNAMED C Identifier, którego oczywiście nie można zbudować. i zaczynam myśleć, że zawodzenie budowy to ich zawód.
Myślę, że tutaj odpowiedź brzmi "nowe C, które łamie standardy, jest złe C", ci hakerzy zawsze wybierają (przebijają przestrzenie nazw), zmieniają domyślne bez powodu, ale tak naprawdę nie "ulepszają C" (z wyjątkiem własnego powiedzmy, że to urządzenie zostało stworzone, aby wyjaśnić, dlaczego uszło im to na sucho z wszystkimi uszkodzeniami, za które nikt jeszcze nie uczynił ich odpowiedzialnymi).
Nie jest problemem, że wcześniejsze preprocesory C nie obsługiwały UNIq_ () __, ponieważ obsługiwały #pragma, która umożliwia oznaczenie „hakera marki kompilatora w kodzie jako włamanie”, a także działa równie dobrze BEZ wpływu na standardy: tak samo jak zmiana defaults to bezużyteczne wonton breakage, i tak samo jak zmiana tego, co robi funkcja przy użyciu tej samej nazwy (clobbering przestrzeni nazw) jest ... moim zdaniem złośliwym oprogramowaniem