Является ли макрос __COUNTER__ переносимым?

У меня есть кусок кода, который использует __COUNTER__ макрос для генерации уникальных имен для переменных.

Этот код переносим? Я знаю, что GCC и MSVS поддерживают это. Что насчет других компиляторов? Макрос определен стандартом (насколько я знаю до C ++ 14 это не было).

4

Решение

Это определенно не стандарт.

Это расширение компилятора (Расширения GNU C)

Общие предопределенные макросы — это расширения GNU C.

и Специфичный для Microsoft,

Предопределенные макросы Microsoft:

__ СЧЕТЧИК __

также поддерживается лязг как расширение языка.

Стандарт нигде не упоминает.

4

Другие решения

Руководство GCC, раздел Общие предопределенные макросы, состояния

Общие предопределенные макросы — это расширения GNU C.

Я также никогда не видел этот макрос в стандартах C99, C11 или C ++ 11.

Что касается практической переносимости: лязг поддерживает это тоже.

2

Похоже на то НЕТ. Когда я Ctrl + F «__COUNTER__» на стандартный pdf, Я ничего не смог найти> о<

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector