У меня есть кусок кода, который использует __COUNTER__
макрос для генерации уникальных имен для переменных.
Этот код переносим? Я знаю, что GCC и MSVS поддерживают это. Что насчет других компиляторов? Макрос определен стандартом (насколько я знаю до C ++ 14 это не было).
Это определенно не стандарт.
Это расширение компилятора (Расширения GNU C)
Общие предопределенные макросы — это расширения GNU C.
Предопределенные макросы Microsoft:
__ СЧЕТЧИК __
также поддерживается лязг как расширение языка.
Руководство GCC, раздел Общие предопределенные макросы, состояния
Общие предопределенные макросы — это расширения GNU C.
Я также никогда не видел этот макрос в стандартах C99, C11 или C ++ 11.
Что касается практической переносимости: лязг поддерживает это тоже.
Похоже на то НЕТ. Когда я Ctrl + F «__COUNTER__» на стандартный pdf, Я ничего не смог найти> о<