Re[2]: typeid. Максимальная длина имени типа
От: jyuyjiyuijyu  
Дата: 30.01.11 07:37
Оценка:
Здравствуйте, Kerbadun, Вы писали:

K>Здравствуйте, Aleх, Вы писали:


A>>В каких случаях typeid(...).name() возвращает

A>>
A>>struct ?? :: ??
A>>

A>>Я подозреваю, тогда, когда длина имени слишком большая. Но никакой информации подтверждающий мои предположения я не нашел.

K>Может, айдишники русскоязычные?

msvc2008
struct _1024(){}; typeid выводит 1031 символ
name + struct\x20 а вот уже struct _4096(){};
пишет
fatal error C1064: compiler limit : token overflowed internal buffer
#define _1() h
#define _4() _1() ## _1() ## _1() ## _1()
#define _16() _4() ## _4() ## _4() ## _4()
#define _64() _16() ## _16() ## _16() ## _16()
#define _256() _64() ## _64() ## _64() ## _64()
#define _1024() _256() ## _256() ## _256() ## _256()
#define _4096() _1024() ## _1024() ## _1024() ## _1024()
#define _16384() _4096() ## _4096() ## _4096() ## _4096()
#define _65536() _16384() ## _16384() ## _16384() ## _16384()

struct _4096(){};

int main(){
    puts(typeid(_4096()).name());
    printf("%lu\n", strlen(typeid(_4096()).name()));
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.