GCC не вимагає "обгортання" (або реалізації), якщо результат не потрібно "пошаровувати". У Gcc є функції, але ВСЕ можна зробити за допомогою простої версії C 1 (а деякі аргументують Берклі 4.3 С набагато швидше, варто навчитися користуватися).
** Clang (llvm) НЕ ПРАВИЛЬНО БІЛИЙ ПРОСТІР для розширення макросу - він додає пробіл (який, безумовно, знищує результат як ідентифікатор C для подальшої попередньої обробки) **, clang просто не робить # або * розширення макросу як передпроцесор С, як очікується, протягом десятиліть. Прекрасним прикладом є компіляція X11, макрос "Concat3" порушений, тепер це результат MISNAMED C Ідентифікатор C, який, звичайно, не вдається створити. і я починаю робити речі невдало - це їх професія.
Я думаю, що відповідь тут - "новий C, який порушує стандарти, поганий C", ці хаки завжди обирають (простори імен клобурів), вони змінюють типові настройки без причини, але насправді не "покращують C" (за винятком власних скажу так: що я Скажімо, контрацепція зроблена для пояснення того, чому вони розійдуться з усіма поломками, поки ніхто не притягує їх до відповідальності).
Це не проблема в тому, що попередні попередні процесори C не підтримували UNIq_ () __, оскільки вони підтримували #pragma, що дозволяє " хакерські знаки компілятора в коді позначати як хакерські", а також функціонують так само БЕЗ ефективних стандартів: так само, як змінюються Значення за замовчуванням - це марний злом Вантона, і так само зміна того, що функція виконує під час використання однойменної назви (простір імен, клобінг) - це, на мою думку, зловмисне програмне забезпечення