GCC не требует «обертывания» (или реализации), если результат не нужно «преобразовать в строку». Gcc имеет функции, но ВСЕ может быть сделано с помощью простого C версии 1 (и некоторые утверждают, что Berkeley 4.3 C намного быстрее, что стоит изучить, как его использовать).
** Clang (llvm) НЕ ИСПОЛЬЗУЕТ БЕЛЫЙ ПРОБЕЛ ПРАВИЛЬНО для раскрытия макроса - он добавляет пробел (который, безусловно, уничтожает результат как идентификатор C для дальнейшей предварительной обработки) **, clang просто не выполняет # или * раскрытие макроса в качестве препроцессора C ожидается на протяжении десятилетий. Ярким примером является компиляция X11, макрос «Concat3» не работает, результатом является MISNAMED C Identifier, который, конечно же, не может быть построен. И я начинаю понимать, что неудачи в сборке - это их профессия.
Я думаю, что ответ здесь: «новый C, который нарушает стандарты, - это плохой C», эти хаки всегда предпочитают (стирать пространства имен), они меняют значения по умолчанию без причины, но на самом деле не «улучшают C» (за исключением их собственного, так сказать: который я скажем, это хитрое изобретение, объясняющее, почему им сходит с рук все поломки, за которые никто еще не возложил на них ответственность).
Не проблема, что более ранние препроцессоры C не поддерживали UNIq_ () __, потому что они поддерживали #pragma, которая позволяет «пометить хакерский код компилятора в коде как хакерство», а также работает так же хорошо. БЕЗ соблюдения стандартов: точно так же, как изменение значений по умолчанию - бесполезная поломка wonton, и точно так же, как изменение того, что функция делает при использовании того же имени (затирание пространства имен), является ... вредоносным ПО на мой взгляд
person
nobodyisaliased
schedule
15.03.2017
__LINE__
(хотя это общий вариант использования. - person Ciro Santilli 新疆再教育营六四事件ۍ   schedule 21.06.2015