Тип времени компиляции без RTTI с GCCC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Тип времени компиляции без RTTI с GCC

Сообщение Anonymous »

Можно ли каким-либо образом получить информацию о типе во время компиляции из GCC с отключенным RTTI? В Visual Studio простая команда типа const char* typeName = typeid(int).name(); соответствующим образом вернет «int», даже если RTTI отключен. К сожалению, GCC не может сделать то же самое. Когда я пытаюсь вызвать typeid без RTTI, моя программа выходит из строя. Я знаю, что отключение RTTI не является частью стандарта, но могу ли я в любом случае заставить GCC выполнять разрешение времени компиляции известных типов?

RTTI отключен по соображениям производительности. Мне не нужен RTTI во время выполнения.

Редактировать:

Вот что у меня получилось:

Код: Выделить всё

template const char* TypeName(void);
template const char* TypeName(T type) { return TypeName(); }

#define REFLECTION_REGISTER_TYPE(type) \
template  const char* TypeName(void) { return #type; }
Требуется, чтобы REFLECTION_REGISTER_TYPE вызывался для каждого типа, которому требуется информация для отражения. Но пока он вызывается для каждого требуемого типа, вызов TypeName работает отлично. Я также добавил функцию TypeName(T type), что означает, что вы можете делать такие вещи: int x = 0; printf(TypeName(x)); и он выведет «int». GCC действительно должен иметь возможность делать это во время компиляции, как это делает VС++.

Подробнее здесь: https://stackoverflow.com/questions/800 ... i-with-gcc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»